On 02/28/2013 12:49 PM, Stas Malyshev wrote:
> Hi!
>
>> It works fine. You just have to load ZO before xdebug. If you load it
>> the other way around bad things happen. This wrong load order currently
>
> Could you describe the bad things? Maybe we could have some checks in
> either of them to prevent it... Of course, we could probably make ZO
> just check if xdebug is loaded and react accordingly, but maybe we could
> resolve it in a more elegant way...
>
Well, I did describe it back on Feb.13 and cc'ed you actually, but it
was a segfault which looked to be caused by a double-free in a piece of
complicated code. It manifested itself on line 203 of this code:
200 } else {
201 list($v, $selector) =
202 $this->variantFromURL($userID) ?:
203 $this->variantForUser($userID) ?:
204 $this->variantForGroup($userID) ?:
205 $this->variantForAdmin($userID) ?:
206 $this->variantForInternal() ?:
207 $this->variantByPercentage($bucketingID) ?:
208 array(self::OFF, 'w');
which, granted, is short-circuited-ternary-abuse, but still. Switching
the ZO/Xdebug load order cleared it up. It didn't happen on every
request and not on a stripped down test case, so it was hard to narrow
down further. But this is often the case for opcode cache-related problems.
The segfault looked like this:
#0 0x00007fc5e636b6b1 in _zval_dtor_func (zvalue=0x7fc5ee784828) at
/home/rlerdorf/php-src/Zend/zend_variables.c:54
54 Z_OBJ_HT_P(zvalue)->del_ref(zvalue TSRMLS_CC);
(gdb) bt
#0 0x00007fc5e636b6b1 in _zval_dtor_func (zvalue=0x7fc5ee784828) at
/home/rlerdorf/php-src/Zend/zend_variables.c:54
#1 0x00007fc5e639f146 in _zval_dtor (execute_data=0x7fc5ebcd3da8) at
/home/rlerdorf/php-src/Zend/zend_variables.h:35
#2 i_zval_ptr_dtor (execute_data=0x7fc5ebcd3da8) at
/home/rlerdorf/php-src/Zend/zend_execute.h:87
#3 zend_leave_helper_SPEC (execute_data=0x7fc5ebcd3da8) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:468
#4 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee6d4140) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#5 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee6d4140) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#6 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#7 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee6cd918) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#8 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee6cd918) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#9 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#10 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee6c9d98) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#11 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee6c9d98) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#12 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#13 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee6c5240) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#14 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee6c5240) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#15 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#16 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee2b4868) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#17 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee2b4868) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#18 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#19 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee713800) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#20 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee713800) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#21 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#22 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee6f7e20) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#23 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee6f7e20) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#24 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#25 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee6f5e50) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#26 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee6f5e50) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#27 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#28 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee682f30) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#29 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee682f30) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#30 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#31 0x00007fc5e63d4cb0 in execute (op_array=0x7fc5ee706080) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#32 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc5ee706080) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#33 0x00007fc5e63e7bf1 in zend_do_fcall_common_helper_SPEC
(execute_data=<value optimized out>)
at /home/rlerdorf/php-src/Zend/zend_vm_execute.h:669
#34 0x00007fc5e63d4cb0 in execute (op_array=0x7fc594bf8100) at
/home/rlerdorf/php-src/Zend/zend_vm_execute.h:410
#35 0x00007fc5e26289c9 in xdebug_execute (op_array=0x7fc594bf8100) at
/home/rlerdorf/pecl/xdebug/xdebug.c:1435
#36 0x00007fc5e636ba0d in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at /home/rlerdorf/php-src/Zend/zend.c:1315
#37 0x00007fc5e630f757 in php_execute_script
(primary_file=0x7fff68d654d0) at /home/rlerdorf/php-src/main/main.c:2492
#38 0x00007fc5e6415bc5 in php_handler (r=0x7fc5edf736c8) at
/home/rlerdorf/php-src/sapi/apache2handler/sapi_apache2.c:667
#39 0x00007fc5ebdc1b00 in ap_run_handler ()
#40 0x00007fc5ebdc53be in ap_invoke_handler ()
#41 0x00007fc5ebdd086c in ap_internal_redirect ()
#42 0x00007fc5e67cd7a5 in ?? () from /etc/httpd/modules/mod_rewrite.so
#43 0x00007fc5ebdc1b00 in ap_run_handler ()
#44 0x00007fc5ebdc53be in ap_invoke_handler ()
#45 0x00007fc5ebdd0a30 in ap_process_request ()
#46 0x00007fc5ebdcd8f8 in ?? ()
#47 0x00007fc5ebdc9608 in ap_run_process_connection ()
#48 0x00007fc5ebdd5807 in ?? ()
#49 0x00007fc5ebdd5b1a in ?? ()
#50 0x00007fc5ebdd5e4b in ap_mpm_run ()
#51 0x00007fc5ebdad900 in main ()