Edit report at https://bugs.php.net/bug.php?id=63305&edit=1

 ID:                 63305
 User updated by:    johan dot groth at sorona dot se
 Reported by:        johan dot groth at sorona dot se
 Summary:            zend_mm_heap corrupted with traits
-Status:             Feedback
+Status:             Open
 Type:               Bug
 Package:            Scripting Engine problem
-Operating System:   Windows 7 64-bit
+Operating System:   All
 PHP Version:        5.4.8
 Block user comment: N
 Private report:     N

 New Comment:

I could not find a way to upload anything to this report so I created a 
temporary repository over at github with the source. I hope this is OK, you can 
find it here: https://github.com/jgroth/php-crash

Something I found interesting while removing as much code as possible from my 
application was that I could not remove comments for some methods in some of 
the classes/interfaces. Doing so would not reproduce the bug. Also, when I 
turned off error reporting, I did not get the bug either.

Note that there is one "Notice" error reported by PHP in this test application. 
I do not have any such errors in the full application, but still got a php 
crash.


Previous Comments:
------------------------------------------------------------------------
[2012-10-20 04:39:27] larue...@php.net

great, if it's okey, you can tar your application as a reproduce script for us

------------------------------------------------------------------------
[2012-10-19 12:35:49] johan dot groth at sorona dot se

Ok, so I have somewhat been able to reproduce the problem. I can still not do 
it in a small script, but I have been able to remove enough code from my 
application so I can send it to anyone who might be looking into this issue. 
The application is based on CodeIgniter, so it's basicly the CI code + a few 
extra files from my application.

------------------------------------------------------------------------
[2012-10-19 09:31:48] johan dot groth at sorona dot se

As I said I was not able to get a stacktrace on windows, so I decided to try it 
on ubuntu. After building the same php version I used on windows, I was able to 
get php to crash with my application. 
However, I was not able to get a stacktrace in this case either. It just says 
"No stack." at the end. I did get some other messages but I doubt it will be of 
any help.

I want to help as much as I can on this, but I'm not familiar with core dumps 
and stacktraces. If I could get some help generating these I would appreciate 
it.

jgroth@ubuntu:~$ gdb php
GNU gdb (GDB) 7.5-ubuntu
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/local/bin/php...done.
(gdb) run /home/jgroth/crash-test/sorona-tms/src/main/php/index.php test
Starting program: /usr/local/bin/php 
/home/jgroth/crash-test/sorona-tms/src/main/php/index.php test
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[Fri Oct 19 02:21:01 2012]  Script:  
'/home/jgroth/crash-test/sorona-tms/src/main/php/index.php'
---------------------------------------
/tmp/php-5.4.8/Zend/zend_opcode.c(404) : Block 0x016854a8 status:
Invalid pointer: ((prev=0x00000248) != (prev.size=0x00000510))
---------------------------------------
[Fri Oct 19 02:21:01 2012]  Script:  
'/home/jgroth/crash-test/sorona-tms/src/main/php/index.php'
---------------------------------------
/tmp/php-5.4.8/Zend/zend_opcode.c(404) : Block 0x01682188 status:
Invalid pointer: ((size=0x00000108) != (next.prev=0x000001b0))
Invalid pointer: ((prev=0x000000a9) != (prev.size=0x000001b0))
---------------------------------------
[Fri Oct 19 02:21:01 2012]  Script:  
'/home/jgroth/crash-test/sorona-tms/src/main/php/index.php'
---------------------------------------
/tmp/php-5.4.8/Zend/zend_opcode.c(404) : Block 0x016857d0 status:
Beginning:      Freed
    Start:      OK
      End:      OK
---------------------------------------
[Inferior 1 (process 6653) exited normally]
(gdb) bt
No stack.
(gdb)

------------------------------------------------------------------------
[2012-10-18 14:24:40] larue...@php.net

Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php for *NIX and
http://bugs.php.net/bugs-generating-backtrace-win32.php for Win32

Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.

we really need a testscript or backtrace to diagnosis the problem

------------------------------------------------------------------------
[2012-10-18 14:08:33] johan dot groth at sorona dot se

Description:
------------
Note: This problem appears on 5.4.8 as well, but it was not available in the 
list when I created the report.

Sometimes when using traits, I get "zend_mm_heap corrupted". I get it both 
while running under apache and while running from the command line. It's a 
problem under apache, since then I do not get any output sent to the browser. 
If I run the same script on the command line, I get output but with 
"zend_mm_heap corrupted" at the end. So, the script seem to finish every time 
but with an error afterwards.

I have gotten this error in the past a few times, but could solve it every time 
by upgrading to a newer release of PHP. Now however, I'm on the latest release 
and have run into this problem yet again. It seems really hard to reproduce, 
and I have not been able to do it in a test script, it only appears when I run 
my full application and only when using traits.

These bugs seem to be related:
#62339
#55382
#62358

I have tried to generate a dump according to these instructions: 
https://bugs.php.net/bugs-generating-backtrace-win32.php
However, I have not been able to get something useful out of it. It seems that 
the program does not detect that a crash has occured, even if it says the 
following in the apache error log:
zend_mm_heap corrupted
[Thu Oct 18 15:35:12 2012] [notice] Parent: child process exited with status 1 
-- Restarting.

Test script:
---------------
I have not been able to reproduce this problem in a test script. 

Expected result:
----------------
Not "zend_mm_heap corrupted"

Actual result:
--------------
zend_mm_heap corrupted


------------------------------------------------------------------------



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=63305&edit=1

Reply via email to