ID: 21478 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Verified +Status: Closed Bug Type: Zend Engine 2 problem Operating System: linux PHP Version: 5.0.0-dev New Comment:
This bug has been fixed in CVS. In case this was a PHP problem, snapshots of the sources are packaged every three hours; this change will be in the next snapshot. You can grab the snapshot at http://snaps.php.net/. In case this was a documentation problem, the fix will show up soon at http://www.php.net/manual/. In case this was a PHP.net website problem, the change will show up on the PHP.net site and on the mirror sites in short time. Thank you for the report, and for helping us make PHP better. Previous Comments: ------------------------------------------------------------------------ [2003-03-26 18:42:35] [EMAIL PROTECTED] Another reproducing script: Happens with HEAD as of today. ./configure --with-gd --with-zlib-dir=/usr --with-mysql --enable-ftp --enable-bcmath --enable-maintainer-zts --enable-sockets --with-gmp=/usr --with-imap --with-imap-ssl=/usr/src/openssl-0.9.6g I've gotten similar results with simpler ./configure lines and simpler scripts, but this is the configuration that is immediately available to me. #!sapi/cli/php <?php class debugfilter extends php_user_filter { function filter($in, $out, &$consumed, $closing) { while ($bucket = stream_bucket_make_writeable($in)) { $bucket->data = strtoupper($bucket->data); stream_bucket_append($out, $bucket); $consumed += strlen($bucket->data); } return PSFS_PASS_ON; } } stream_register_filter("myfilter","debugfilter"); $fp = fopen("test.txt","w"); stream_filter_append($fp, "myfilter"); stream_filter_append($fp, "myfilter"); stream_filter_append($fp, "myfilter"); fwrite($fp, "This is a test.\n"); print "Done.\n"; fclose($fp); // Uncommenting the following 'print' line causes the segfault to stop occuring // print "2\n"; readfile("test.txt"); ?> ------------------------------------------------------------------------ [2003-03-26 18:18:33] [EMAIL PROTECTED] http://sunshine.krneki.org/test.phps this is a suspicious function inside my code, but i dont know if its my fault or not... you can spot that this function is a class member ($this references inside), the rest of the class is unimportant.. http://www.php.net/manual/en/language.references.return.php a comment on this page from "giorgio dot galloNOSPAM at NOSPAMdedalomedia dot it" describes pretty accurate behaviour i pressume on my side, but the result beeing segfaults and not some spooky/eerie values. nowhere here does it say i should do stuff like: $v = &$object; return $v; inside functions which return references, correct? should i? ill pack up my current code and try two sollutions, one to use $v = &$object; return $v;... and the other just to plainly remove the "&" infront of the function name and make it return by value... can i please get some feedback on this, my mail is open, and i'm willing to help you in any way possible... ------------------------------------------------------------------------ [2003-03-26 05:43:49] [EMAIL PROTECTED] this bug just doesnt seem to get away fully... i've acctually (on the safe side) got around to compile 4.3.1 stable official release and using it on the software.. i still get occasional random segfaults.. but the problem is that they occur after some time, and i cant reproduce them in any way, because they are TOTALLY random.. is a funny memory leak of somekind possible? im getting more bugs than ever, and i can't seem to put a finger on either one of them, it appears every time i start gdb on apache i cant bring it to crash... i tried this now for atleast an hour, with no success.. ugh it hit me... thread safety perhaps? i've tried in gdb and as far as i understand that is only 1 thread.. and i couldnt reproduce it inside gdb... i have http://sunshine.krneki.org/phpinfo.php ... to go over it the extensions i really use are ftp, gd2, sockets, mysql, xml, aggregate (i think this isnt an extension, but i noticed "object overloading" in phpinfo somewhere).. im unsure about the rest.. is it possible that one of theese extensions isnt quite thread safe? i also use stuff like "function &mod($name)" inside an object to return a reference to an object.. and then $var = &$obj->mod("name"); to assign it in the code.. since this is the.. one.. probablly only major change i did to the code besides using aggregate() and ... well.. nothing else... dual proc or not, the segfaults still happen... my next "sollution/test" will be to remove references from the code and try to solve modularity in a more "global" type of way... to see if the crashes go away... i have about a week to come up with something, then it's serious ass raping time, cause ill miss a BIG BIG BIG deadline. if someone wants to look at the code, i have no problem in putting up a tgz with a test database.. but realise that a small reproducible script is wishfull thinking.. just the /include dir should be around 170k (but it is clean code, really ;)) any guides how i could debug this in threaded mode / all apache threads? ------------------------------------------------------------------------ [2003-03-25 10:55:16] [EMAIL PROTECTED] I'm setting back to verified, since polita infact has a reproducable version above? As i said, i might be wrong and mine is not related to politas directly, but the same behaviour applies (only a bit different backtrace which leads me to the conclusion that the behaviour might not be related). ------------------------------------------------------------------------ [2003-03-20 17:06:04] [EMAIL PROTECTED] Closed then. ------------------------------------------------------------------------ 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/21478 -- Edit this bug report at http://bugs.php.net/?id=21478&edit=1