ID: 31624 Comment by: casey dot dinsmore at viewplus dot com Reported By: ericvanblokland at gmail dot com Status: Open Bug Type: Session related Operating System: Fedora Core 2 PHP Version: 4CVS-2005-01-22 New Comment:
Hello, After upgrading my PHP from 4.3.9 to 4.3.10 on FreeBSD 5.2.1 I am experiencing this problem. I have tried both apache 2.0.52 and apache-ssl 1.3.33 I can serve up plain HTML, and basic PHP scripts without any problem The following script puts a segmentation fault in my log [Tue Mar 8 16:35:19 2005] [notice] child pid 6673 exit signal Segmentation fault (11) <?php session_start(); ?> Previous Comments: ------------------------------------------------------------------------ [2005-02-22 20:56:52] eerror at gmail dot com for me it segfaults as soon as the code hits session_start. nothing complex about the code. even a 3 line test script will cause it. box: suse9.1,apache2.0.52, php4.3.10 ------------------------------------------------------------------------ [2005-02-05 18:00:17] ericvanblokland at gmail dot com This is indeed very interesting, I haven't examined your code thoroughly yet, but my objects tend to do memory consuming data processing operations on wakeup. So this issue might be related as well. Perhaps you want to post your own bug-report about this, because your issue is very precise and has its own example code. If you do, please post a link to your report here, because your issue might as well be mine. ------------------------------------------------------------------------ [2005-02-05 15:45:05] bertrand at toggg dot com I'm experiencing a simpler segfault on PHP4.3.10 FC2 too this way, just trying to double and again an array: $arr = array (str_repeat('X', 65536)); $mem = 0; while ($loop--) { for ($i = count($arr); $i; $i--) { $arr[] = $arr[0]; if ($i%16) { continue; } if ( ( ($nmem = memory_get_usage()) - $mem) > 1000000) { $mem = $nmem; echo 'Count:'.count($arr)." ($mem bytes)<br>\n"; flush(); } } echo $loop.':'.count($arr).'/'.memory_get_usage() . " bytes<br>\n"; flush(); } echo "<br>\n OK <br>\n"; flush(); For 18 loops it breaks my default memory limit of 8 Mo: Allowed memory size of 8388608 bytes exhausted as expected. If I add before the loop: if (ini_set ('memory_limit', 16*1048576)) { echo "Set memory limit to 16 Mo<br>\n"; } It's taking an incredible amount of time and I get segfault. What is strange, I get the output: Set memory limit to 16 Mo 17:2/87456 <...snip...> Count:256113 (11380680 bytes) 0:262144/11621952 bytes what means the end of last loop reached. But I never get the final acknowledgement. I understand it's much more simpler as yours, but result is quite near. ------------------------------------------------------------------------ [2005-02-04 13:05:53] ericvanblokland at gmail dot com Are you sure this is related to my problem? Do you have any data in your session? If so, it very well might be related, if you experience the crash always, no matter what, on session_start(); you should look for a solution elsewhere. In my case, the segmentation faults are triggered within the __wakeup(); functions of my objects that exists in the session. Under certain conditions the compiler messes up when unserializing the session (In my last test-run yesterday memory leaks where reported with a compiler with debug enabled and de segfaults disappeared, without the debug mode enabled the segfaults returned) causing simple variable assignments to crash php. After a lot of testing I found when not putting certain data in the session, the segfaults would disappear. However this data has nothing to do with the crashing object. Unless the data has been referenced. It shouldn't, but http://bugs.php.net/bug.php?id=24485 might be causing a reference anyway. Still, the php compiler contains some very serious bugs, that might be causing, or causing the conditions which result in a segmentation fault. ------------------------------------------------------------------------ [2005-02-04 11:20:15] 1 at movesmountains dot com Not sure if this is the same bug or not; however, I'm getting a segfault on every call to session_start(), no matter how trivial the code ( <? session_start(); ?> will do it). FreeBSD 4.8-STABLE Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7e PHP/4.3.10 Not sure what other info would be useful to you. ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/31624 -- Edit this bug report at http://bugs.php.net/?id=31624&edit=1