Bug #76050 [Asn]: Segfault in new GC implementation

From: Date: Mon, 05 Mar 2018 14:47:31 +0000
Subject: Bug #76050 [Asn]: Segfault in new GC implementation
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-214207@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=76050&edit=1 ID: 76050 Updated by: nikic@php.net Reported by: kelunik@php.net Summary: Segfault in new GC implementation Status: Assigned Type: Bug Package: Reproducible crash Operating System: Linux PHP Version: master-Git-2018-03-05 (Git) Assigned To: dmitry Block user comment: N Private report: N New Comment: Reduced repro code: <?php class Foo { public $foo; } gc_disable(); $n = 128 * 1024; for ($i = 0; $i < $n; $i++) { $f = new Foo; $f->foo = $f; } Previous Comments: ------------------------------------------------------------------------ [2018-03-05 14:28:46] dmitry@php.net The problem caused by GC address compression that doesn't take into account special meaning of "zero" address. ------------------------------------------------------------------------ [2018-03-05 12:52:57] kelunik@php.net Description: ------------ Seems like the new GC implementation isn't entirely free of bugs, yet. I'm getting segfaults in various situations, but haven't been able to write a minimal script, yet. Running any composer update 100% reproduces the problem for me, though. Expected result: ---------------- No segfault. Actual result: -------------- #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51 #1 0x00007f0b1d193f5d in __GI_abort () at abort.c:90 #2 0x00007f0b1d189f17 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x55c617b01629 "addr", file=file@entry=0x55c617b014b8 "/home/kelunik/.php-build/release/Zend/zend_gc.c", line=line@entry=602, function=function@entry=0x55c617b016b0 <__PRETTY_FUNCTION__.10643> "gc_remove_from_buffer") at assert.c:92 #3 0x00007f0b1d189fc2 in __GI___assert_fail (assertion=0x55c617b01629 "addr", file=0x55c617b014b8 "/home/kelunik/.php-build/release/Zend/zend_gc.c", line=602, function=0x55c617b016b0 <__PRETTY_FUNCTION__.10643> "gc_remove_from_buffer") at assert.c:101 #4 0x000055c6172b3a17 in gc_remove_from_buffer (ref=0x7f0b08c10820) at /home/kelunik/.php-build/release/Zend/zend_gc.c:602 #5 0x000055c6172d089e in zend_objects_store_del (object=0x7f0b08c10820) at /home/kelunik/.php-build/release/Zend/zend_objects_API.c:193 #6 0x000055c61727784d in zend_object_destroy_wrapper (obj=0x7f0b08c10820, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=146868256) at /home/kelunik/.php-build/release/Zend/zend_variables.c:96 #7 0x000055c61727769a in _zval_dtor_func (p=0x7f0b08c10820, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=57) at /home/kelunik/.php-build/release/Zend/zend_variables.c:67 #8 0x000055c6172c9391 in i_zval_ptr_dtor (zval_ptr=0x7f0b07ac02c8, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=57) at /home/kelunik/.php-build/release/Zend/zend_variables.h:49 #9 0x000055c6172c9523 in zend_object_std_dtor (object=0x7f0b07ac0280) at /home/kelunik/.php-build/release/Zend/zend_objects.c:57 #10 0x000055c6172d0851 in zend_objects_store_del (object=0x7f0b07ac0280) at /home/kelunik/.php-build/release/Zend/zend_objects_API.c:188 #11 0x000055c61727784d in zend_object_destroy_wrapper (obj=0x7f0b07ac0280, __zend_filename=0x55c617aac2d8 "/home/kelunik/.php-build/release/ext/spl/spl_dllist.c", __zend_lineno=128713344) at /home/kelunik/.php-build/release/Zend/zend_variables.c:96 #12 0x000055c61727769a in _zval_dtor_func (p=0x7f0b07ac0280, __zend_filename=0x55c617aac2d8 "/home/kelunik/.php-build/release/ext/spl/spl_dllist.c", __zend_lineno=356) at /home/kelunik/.php-build/release/Zend/zend_variables.c:67 #13 0x000055c61725cef9 in i_zval_ptr_dtor (zval_ptr=0x7ffe38457400, __zend_filename=0x55c617aac2d8 "/home/kelunik/.php-build/release/ext/spl/spl_dllist.c", __zend_lineno=356) at /home/kelunik/.php-build/release/Zend/zend_variables.h:49 #14 0x000055c61725f26d in _zval_ptr_dtor (zval_ptr=0x7ffe38457400, __zend_filename=0x55c617aac2d8 "/home/kelunik/.php-build/release/ext/spl/spl_dllist.c", __zend_lineno=356) at /home/kelunik/.php-build/release/Zend/zend_execute_API.c:532 #15 0x000055c61703a111 in spl_dllist_object_free_storage (object=0x7f0b07aab660) at /home/kelunik/.php-build/release/ext/spl/spl_dllist.c:356 #16 0x000055c6172d0851 in zend_objects_store_del (object=0x7f0b07aab660) at /home/kelunik/.php-build/release/Zend/zend_objects_API.c:188 #17 0x000055c61727784d in zend_object_destroy_wrapper (obj=0x7f0b07aab660, __zend_filename=0x55c617afea78 "/home/kelunik/.php-build/release/Zend/zend_hash.c", __zend_lineno=128628320) at /home/kelunik/.php-build/release/Zend/zend_variables.c:96 #18 0x000055c61727769a in _zval_dtor_func (p=0x7f0b07aab660, __zend_filename=0x55c617afea78 "/home/kelunik/.php-build/release/Zend/zend_hash.c", __zend_lineno=1381) at /home/kelunik/.php-build/release/Zend/zend_variables.c:67 #19 0x000055c61728df6e in i_zval_ptr_dtor (zval_ptr=0x7f0b07902960, __zend_filename=0x55c617afea78 "/home/kelunik/.php-build/release/Zend/zend_hash.c", __zend_lineno=1381) at /home/kelunik/.php-build/release/Zend/zend_variables.h:49 #20 0x000055c61729277b in zend_array_destroy (ht=0x7f0b0cd723c0) at /home/kelunik/.php-build/release/Zend/zend_hash.c:1381 #21 0x000055c61727782b in zend_array_destroy_wrapper (arr=0x7f0b0cd723c0, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=215425984) at /home/kelunik/.php-build/release/Zend/zend_variables.c:91 #22 0x000055c61727769a in _zval_dtor_func (p=0x7f0b0cd723c0, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=57) at /home/kelunik/.php-build/release/Zend/zend_variables.c:67 #23 0x000055c6172c9391 in i_zval_ptr_dtor (zval_ptr=0x7f0b0cd72ce8, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=57) at /home/kelunik/.php-build/release/Zend/zend_variables.h:49 #24 0x000055c6172c9523 in zend_object_std_dtor (object=0x7f0b0cd72cc0) at /home/kelunik/.php-build/release/Zend/zend_objects.c:57 #25 0x000055c6172d0851 in zend_objects_store_del (object=0x7f0b0cd72cc0) at /home/kelunik/.php-build/release/Zend/zend_objects_API.c:188 #26 0x000055c61727784d in zend_object_destroy_wrapper (obj=0x7f0b0cd72cc0, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=215428288) at /home/kelunik/.php-build/release/Zend/zend_variables.c:96 #27 0x000055c61727769a in _zval_dtor_func (p=0x7f0b0cd72cc0, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=57) at /home/kelunik/.php-build/release/Zend/zend_variables.c:67 #28 0x000055c6172c9391 in i_zval_ptr_dtor (zval_ptr=0x7f0b1523c598, __zend_filename=0x55c617b03598 "/home/kelunik/.php-build/release/Zend/zend_objects.c", __zend_lineno=57) at /home/kelunik/.php-build/release/Zend/zend_variables.h:49 #29 0x000055c6172c9523 in zend_object_std_dtor (object=0x7f0b1523c500) at /home/kelunik/.php-build/release/Zend/zend_objects.c:57 #30 0x000055c6172d0851 in zend_objects_store_del (object=0x7f0b1523c500) at /home/kelunik/.php-build/release/Zend/zend_objects_API.c:188 #31 0x000055c61727784d in zend_object_destroy_wrapper (obj=0x7f0b1523c500, __zend_filename=0x55c617b051c0 "/home/kelunik/.php-build/release/Zend/zend_execute.c", __zend_lineno=354665728) at /home/kelunik/.php-build/release/Zend/zend_variables.c:96 #32 0x000055c61727769a in _zval_dtor_func (p=0x7f0b1523c500, __zend_filename=0x55c617b051c0 "/home/kelunik/.php-build/release/Zend/zend_execute.c", __zend_lineno=2371) at /home/kelunik/.php-build/release/Zend/zend_variables.c:67 #33 0x000055c6172e0401 in i_free_compiled_variables (execute_data=0x7f0b15e22470) at /home/kelunik/.php-build/release/Zend/zend_execute.c:2371 #34 0x000055c6172e25b5 in zend_leave_helper_SPEC () at /home/kelunik/.php-build/release/Zend/zend_vm_execute.h:505 #35 0x000055c61730b2b8 in ZEND_RETURN_SPEC_TMP_HANDLER () at /home/kelunik/.php-build/release/Zend/zend_vm_execute.h:17864 #36 0x000055c617357643 in execute_ex (ex=0x7f0b15e1f030) at /home/kelunik/.php-build/release/Zend/zend_vm_execute.h:56746 #37 0x000055c61735ab5f in zend_execute (op_array=0x7f0b15e83300, return_value=0x0) at /home/kelunik/.php-build/release/Zend/zend_vm_execute.h:60126 #38 0x000055c61727b8b1 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /home/kelunik/.php-build/release/Zend/zend.c:1541 #39 0x000055c6171ddb18 in php_execute_script (primary_file=0x7ffe38459f50) at /home/kelunik/.php-build/release/main/main.c:2467 #40 0x000055c61735d7f3 in do_cli (argc=3, argv=0x55c6193e3e90) at /home/kelunik/.php-build/release/sapi/cli/php_cli.c:1011 #41 0x000055c61735e9b1 in main (argc=3, argv=0x55c6193e3e90) at /home/kelunik/.php-build/release/sapi/cli/php_cli.c:1404 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=76050&edit=1

« previous php.bugs (#214207) next »