Package home | Report new bug | New search | Development Roadmap Status: Open | Feedback | All | Closed Since Version 1.10.15

Bug #5891 cannot upgrade/install package PEAR
Submitted: 2005-11-08 10:24 UTC
From: mdv at inyourpocket dot com Assigned:
Status: Bogus Package: PEAR
PHP Version: 5.0.5 OS: Debian
Roadmaps: (Not assigned)    
Subscription  


 [2005-11-08 10:24 UTC] mdv at inyourpocket dot com
Description: ------------ when i try install downloaded package PEAR or run command upgrade-all or upgrade PEAR pear consume all of my memory (see below) it's only for PEAR package PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 9632 root 17 0 1102m 472m 584 R 46.0 93.8 0:32.60 php Test script: --------------- Configuration (channel pear.php.net): ===================================== Auto-discover new Channels auto_discover <not set> Default Channel default_channel pear.php.net HTTP Proxy Server Address http_proxy <not set> PEAR server [DEPRECATED] master_server pear.php.net Default Channel Mirror preferred_mirror pear.php.net Remote Configuration File remote_config <not set> PEAR executables directory bin_dir /usr/local/php/bin PEAR documentation directory doc_dir /usr/local/php/lib/php/doc PHP extension directory ext_dir /usr/local/php/lib/php/extensions/no-debug-non-zts-20041030 PEAR directory php_dir /usr/local/php/lib/php PEAR Installer cache directory cache_dir /tmp/pear/cache PEAR data directory data_dir /usr/local/php/lib/php/data PHP CLI/CGI binary php_bin /usr/local/php/bin/php PEAR test directory test_dir /usr/local/php/lib/php/test Cache TimeToLive cache_ttl 3600 Preferred Package State preferred_state stable Unix file mask umask 22 Debug Log Level verbose 1 PEAR password (for password <not set> maintainers) Signature Handling Program sig_bin /usr/bin/gpg Signature Key Directory sig_keydir /usr/local/php/etc/pearkeys Signature Key Id sig_keyid <not set> Package Signature Type sig_type gpg PEAR username (for username <not set> maintainers) User Configuration File Filename /root/.pearrc System Configuration File Filename /usr/local/php/etc/pear.conf PEAR Version: 1.4.2 PHP Version: 5.0.5 Zend Engine Version: 2.0.5 Running on: Linux system 2.4.20 #1 Wed Jan 1 18:31:58 CET 2003 i686 Expected result: ---------------- that package will upgrade or install new version Actual result: -------------- SIGSEGV or Terminated

Comments

 [2005-11-09 16:25 UTC] cellog
There is not enough information to debug this. There are many unix users, including debian users, who are upgrading/installing packages with no problem. You have found an edge case, and as such, this may be a bug in PHP itself. If possible, try to insert var_dump('here'); throughout PEAR_Installer::install() (found in /usr/local/php/lib/php/PEAR/Installer.php) to determine at the very least how far into installation the script goes. If you see no output, then the problem is in download, and in that case, you will need to insert var_dump('here'); throughout PEAR_Downloader::download()
 [2005-11-11 09:01 UTC] mdv at inyourpocket dot com
in function PEAR_Downloader::download() in file PEAR/Downloader.php (about line 380) foreach ($params as $i => $package) { PEAR::staticPushErrorHandling(PEAR_ERROR_RETURN); $pf = &$params[$i]->download(); var_dump('here'); die('DEBUG'); PEAR::staticPopErrorHandling(); if (PEAR::isError($pf)) { statement var_dump('here') and rest is never reached, so it looks that here is problem: $params[$i]->download(); i can send you var_dump($params[$i]); (is about 1.5M unpacked)
 [2005-11-11 17:13 UTC] cellog
I appreciate the extra work. If you can, it would be helpful to add this line before $pf = &$params[$i]->download(); var_dump($params[$i]->getPackage(), $params[$i]->getVersion()); This way, you can verify which package/version is hanging because it will hang after printing the information. In addition, $params[$i] is a PEAR_Downloader_Package object, so you could isolate this even further by 1) running and finding out the package/version that is hanging (it is not necessarily PEAR, as it may be one of the dependencies) 2) find out which line of PEAR_Downloader_Package::download() is hanging, and perhaps even isolating it to a single line of simple PHP code If you can do this, it may be possible to determine the source of the problem quite easily.
 [2005-11-12 02:18 UTC] cellog
actually, could you try this simple step before doing any of the other junk: pear install -Z PEAR and see if it works? Thanks
 [2005-11-13 07:21 UTC] mdv at inyourpocket dot com
pear install -Z PEAR: Skipping package "pear/PEAR", already installed as version 1.4.2 No valid packages found install failed but pear upgrade -Z PEAR: same as first (php get all of my memory) and it's only PEAR package other packages installed with no problem (Mail, Mail_Mime installed and other upgraded from distro versions) var_dump($params[$i]->getPackage(), $params[$i]->getVersion()) returns: string(4) "PEAR" string(5) "1.4.4" i will try to determine the source of the problem
 [2005-11-13 07:49 UTC] mdv at inyourpocket dot com
in PEAR/Downloader/Package.php function _fromUrl($param, $saveparam = '') input are: string(38) "http://pear.php.net/get/PEAR-1.4.4.tgz" string(9) "pear/PEAR" is code (about line 1387): $pf = &$pkg->fromAnyFile($file, PEAR_VALIDATE_INSTALLING); PEAR::popErrorHandling(); if i put between two lines above print_r($pf); - everything is ok (i have dump - 520k) but if i put var_dump($pf); - it hangs and code after (eg. PEAR::popErrorHandling(); and rest is not executed)
 [2005-11-13 11:25 UTC] mdv at inyourpocket dot com
i transfered whole PEAR and php.ini to another machine and here was SIGSEGV so i put php in gdb and there is result (maybe it helps): (gdb) set arg -C -q -d include_path=/usr/local/php/lib/php -d output_buffering=1 /usr/local/php/lib/php/pearcmd.php upgrade PEAR (gdb) r Starting program: /usr/local/php/bin/php -C -q -d include_path=/usr/local/php/lib/php -d output_buffering=1 /usr/local/php/lib/php/pearcmd.php upgrade PEAR downloading PEAR-1.4.4.tgz ... Starting to download PEAR-1.4.4.tgz (276,978 bytes) .........................................................done: 276,978 bytes Program received signal SIGSEGV, Segmentation fault. 0xb7c6112f in free () from /lib/tls/libc.so.6 backtrack: #1 0xb7c62cec in malloc () from /lib/tls/libc.so.6 #2 0x081ac80f in _emalloc (size=3084056672) at /root/src/php-5.0.5/Zend/zend_alloc.c:183 #3 0x081c7bfe in _zend_hash_add_or_update (ht=0x99d7934, arKey=Variable "arKey" is not available. ) at /root/src/php-5.0.5/Zend/zend_hash.c:242 #4 0x081c7e2a in zend_hash_copy (target=0x99d7934, source=0x8a5d23c, pCopyConstructor=0x81d2000 <zval_add_ref_or_clone>, tmp=0x0, size=4) at /root/src/php-5.0.5/Zend/zend_hash.c:760 #5 0x081d20df in zend_objects_clone_members (new_object=0x99d7914, new_obj_val={handle = 23717, handlers = 0x827a880}, old_object=0x8a1230c, handle=61) at /root/src/php-5.0.5/Zend/zend_objects.c:139 #6 0x081d227c in zend_objects_clone_obj (zobject=0x3c) at /root/src/php-5.0.5/Zend/zend_objects.c:186 #7 0x081d2060 in zval_add_ref_or_clone (p=0x99d78c0) at /root/src/php-5.0.5/Zend/zend_objects.c:127 #8 0x081c7e3a in zend_hash_copy (target=0x99d74f4, source=0x8a223cc, pCopyConstructor=0x81d2000 <zval_add_ref_or_clone>, tmp=0x0, size=4) at /root/src/php-5.0.5/Zend/zend_hash.c:765 #9 0x081d20df in zend_objects_clone_members (new_object=0x99d74d4, new_obj_val={handle = 23716, handlers = 0x827a880}, old_object=0x8a25c24, handle=62) at /root/src/php-5.0.5/Zend/zend_objects.c:139 #10 0x081d227c in zend_objects_clone_obj (zobject=0x3c) at /root/src/php-5.0.5/Zend/zend_objects.c:186 #11 0x081d2060 in zval_add_ref_or_clone (p=0x99d7488) at /root/src/php-5.0.5/Zend/zend_objects.c:127 #12 0x081c7e3a in zend_hash_copy (target=0x99d7404, source=0x8a5d23c, pCopyConstructor=0x81d2000 <zval_add_ref_or_clone>, tmp=0x0, size=4) at /root/src/php-5.0.5/Zend/zend_hash.c:765 #13 0x081d20df in zend_objects_clone_members (new_object=0x99d73e4, new_obj_val={handle = 23715, handlers = 0x827a880}, old_object=0x8a1230c, handle=61) at /root/src/php-5.0.5/Zend/zend_objects.c:139 #14 0x081d227c in zend_objects_clone_obj (zobject=0x3c) at /root/src/php-5.0.5/Zend/zend_objects.c:186
 [2005-11-13 16:04 UTC] cellog
great sleuthing, thank you do you have ze1.compat turned on in php.ini?
 [2005-11-14 06:48 UTC] mdv at inyourpocket dot com
zend.ze1_compatibility_mode = On with zend.ze1_compatibility_mode = Off upgrade with no problems so thank you for solution (little easy, isn't ? :))
 [2005-11-14 07:07 UTC] cellog
thank Wez Furlong, he suggested based on your backtrace what the problem was. I would recommend opening a bug at http://bugs.php.net with the information and the full backtrace, perhaps they can track down the problem and fix it. Thanks for the persistence! Since this is a PHP and not a PEAR bug, I'm marking it bogus, with the assumption you'll open a PHP bug