Bug #67687 [NEW]: Crash or zend_mm_heap_corrupted error in opcache with OwnCloud 7 update

From: Date: Sat, 26 Jul 2014 00:53:37 +0000
Subject: Bug #67687 [NEW]: Crash or zend_mm_heap_corrupted error in opcache with OwnCloud 7 update
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-186818@lists.php.net to get a copy of this message
From: adamw at happyassassin dot net Operating system: Fedora 20 PHP version: 5.5.15 Package: opcache Bug Type: Bug Bug description:Crash or zend_mm_heap_corrupted error in opcache with OwnCloud 7 update Description: ------------ I've been hitting a fairly reproducible crash in the PHP 5.5 Zend opcache, when accessing the OwnCloud 7 update page (which is displayed the first time you access an OwnCloud installation after upgrading OwnCloud - it updates the database for the new OC release). I'll include a backtrace of the crash (the backtrace is from my 'live' OC deployment and was with PHP 5.5.14, but I've verified that a clean install with PHP 5.5.15 also hits the crash). The affected code in OwnCloud is https://github.com/owncloud/core/blob/stable7/core/ajax/update.php (though you may need some familiarity with the OC codebase to work out where all the stuff it calls comes from). I have the bug reproduced with a fresh deployment of Fedora 20 and OwnCloud on a disposable test system, and I can provide remote shell access to that system for any dev interested in trying to debug this issue. I have also reported this issue to OwnCloud at https://github.com/owncloud/core/issues/9885 , where there are some more specific details about exactly how to reproduce it (basically, install Fedora 20, install a web server environment including the PHP opcache, do a minimal initial deployment of OwnCloud 6, then update it to OwnCloud 7, access the OC deployment - which will direct you to the update page - and then refresh the page a few times). Remi Collet (Fedora PHP maintainer) suggested to me that it probably constitutes a bug in PHP any time vaguely sane PHP code causes a crash in the opcache like this, so I thought reporting it to PHP would also make sense. Actual result: -------------- Thread 1 (Thread 0x7ffb746da880 (LWP 27950)): #0 zend_mm_add_to_free_list (heap=<optimized out>, mm_block=0x7ffb769df1b0) at /usr/src/debug/php-5.5.14/Zend/zend_alloc.c:752 prev = 0x7ffb76a0c3b800 m = 9223372036854775808 p = 0x7ffb76a06cdf size = 680 index = <optimized out> #1 0x00007ffb65db6269 in _zend_mm_free_int (heap=0x7ffb765a7690, p=0x7ffb769df2e0) at /usr/src/debug/php-5.5.14/Zend/zend_alloc.c:2118 mm_block = 0x7ffb769df1b0 next_block = 0x7ffb769df320 size = 680 #2 0x00007ffb65ded3c8 in zend_hash_destroy (ht=0x7ffb661d50f0 <compiler_globals+272>) at /usr/src/debug/php-5.5.14/Zend/zend_hash.c:560 p = 0x7ffb76b7a840 q = 0x7ffb769df468 #3 0x00007ffb65dbac08 in shutdown_compiler () at /usr/src/debug/php-5.5.14/Zend/zend_compile.c:243 No locals. #4 0x00007ffb65ddecdd in zend_deactivate () at /usr/src/debug/php-5.5.14/Zend/zend.c:938 __orig_bailout = 0x0 __bailout = {{__jmpbuf = {140717726714592, 1220331504840024189, 140718002600480, 140717969548992, 0, 140718002558800, 1217778156862513277, 1220328752599343229}, __mask_was_saved = 0, __saved_mask = {__val = {0, 9, 0, 0, 0, 140737186205984, 140717726712640, 140717726714184, 140717969548992, 0, 140717722556736, 140737186205984, 140717726712640, 140718002600480, 140717722232828, 0}}}} #5 0x00007ffb65d7c575 in php_request_shutdown (dummy=dummy@entry=0x0) at /usr/src/debug/php-5.5.14/main/main.c:1808 report_memleaks = 1 '\001' #6 0x00007ffb65e93eaf in php_apache_request_dtor (r=<optimized out>) at /usr/src/debug/php-5.5.14/sapi/apache2handler/sapi_apache2.c:507 No locals. #7 php_handler (r=<optimized out>) at /usr/src/debug/php-5.5.14/sapi/apache2handler/sapi_apache2.c:679 ctx = 0x7ffb76906168 conf = <optimized out> brigade = 0x7ffb768f25b8 bucket = <optimized out> rv = <optimized out> parent_req = 0x0 #8 0x00007ffb7472f290 in ap_run_handler (r=0x7ffb768efa20) at config.c:169 pHook = 0x7ffb7655c850 n = 12 rv = -1597786112 #9 0x00007ffb7472f7d9 in ap_invoke_handler (r=r@entry=0x7ffb768efa20) at config.c:439 handler = <optimized out> p = <optimized out> result = <optimized out> old_handler = 0x7ffb7654a660 "application/x-httpd-php" ignore = <optimized out> #10 0x00007ffb7474436a in ap_process_async_request (r=r@entry=0x7ffb768efa20) at http_request.c:317 access_status = 0 #11 0x00007ffb74744644 in ap_process_request (r=r@entry=0x7ffb768efa20) at http_request.c:363 bb = <optimized out> b = <optimized out> c = 0x7ffb768e5750 rv = <optimized out> #12 0x00007ffb74741002 in ap_process_http_sync_connection (c=0x7ffb768e5750) at http_core.c:190 r = 0x7ffb768efa20 cs = 0x0 csd = 0x0 mpm_state = 0 #13 ap_process_http_connection (c=0x7ffb768e5750) at http_core.c:231 No locals. #14 0x00007ffb74738e40 in ap_run_process_connection (c=0x7ffb768e5750) at connection.c:41 pHook = 0x7ffb7655d018 n = 2 rv = -1597786112 #15 0x00007ffb74739228 in ap_process_connection (c=c@entry=0x7ffb768e5750, csd=<optimized out>) at connection.c:202 rc = <optimized out> #16 0x00007ffb69e737ef in child_main (child_num_arg=child_num_arg@entry=5) at prefork.c:704 current_conn = 0x7ffb768e5750 csd = 0x7ffb768e5560 thd = 0x7ffb768e3550 osthd = 140717966862464 ptrans = 0x7ffb768e54e8 allocator = 0x7ffb768e33e0 status = <optimized out> i = <optimized out> lr = <optimized out> pollset = 0x7ffb768e3988 sbh = 0x7ffb768e3980 last_poll_idx = 1 lockfile = <optimized out> #17 0x00007ffb69e73a26 in make_child (s=0x7ffb76485340, slot=5) at prefork.c:800 pid = 0 #18 0x00007ffb69e746be in perform_idle_server_maintenance (p=<optimized out>) at prefork.c:902 i = <optimized out> idle_count = <optimized out> ws = <optimized out> free_length = <optimized out> free_slots = {5, 32763, 513, 0 <repeats 29 times>} last_non_dead = <optimized out> total_non_dead = <optimized out> #19 prefork_run (_pconf=<optimized out>, plog=<optimized out>, s=<optimized out>) at prefork.c:1090 status = 32763 pid = {pid = -1, in = 0x7ffb65dec4cf <_zend_hash_add_or_update+895>, out = 0x20765a2be0, err = 0x14} child_slot = <optimized out> exitwhy = (APR_PROC_EXIT | unknown: 1710018720) processed_status = <optimized out> index = <optimized out> remaining_children_to_start = 0 rv = <optimized out> #20 0x00007ffb7471500e in ap_run_mpm (pconf=0x7ffb7645c158, plog=0x7ffb76489378, s=0x7ffb76485340) at mpm_common.c:96 pHook = 0x7ffb76559bc8 n = 0 rv = -1597786112 #21 0x00007ffb7470e5d6 in main (argc=2, argv=0x7fffedfd99a8) at main.c:777 c = 68 'D' showcompile = 0 showdirectives = 0 confname = 0x7ffb7474b08f "conf/httpd.conf" def_server_root = 0x7ffb7474b084 "/etc/httpd" temp_error_log = 0x0 error = <optimized out> process = 0x7ffb7645a238 pconf = 0x7ffb7645c158 plog = 0x7ffb76489378 ptemp = 0x7ffb76487368 pcommands = 0x7ffb7647e268 opt = 0x7ffb7647e358 rv = <optimized out> mod = 0x7ffb74969098 <ap_prelinked_modules+24> opt_arg = 0x7fffedfd9f6f "FOREGROUND" signal_server = <optimized out> -- Edit bug report at https://bugs.php.net/bug.php?id=67687&edit=1 --

« previous php.bugs (#186818) next »