Hi there,
I'm testing XDebug 2.4.0RC3 in combination with PHP 7.0.0 on Solaris 10 
Sparc.
I'm seeing crashes with slightly unclear reproducibility. I wonder 
whether they are related to your issue #1229 (crashes because of -O2 for 
GCC 4.8). I'm using GCC 4.9.3 in combination with -O2.
The issue says same code gets removed under -O2. What part of the code 
is it? I'd like to check, whether that's also happening for gcc 4.9.3. 
Could you please provide any details?
Concerning my crashes, here's a backtrace of one of the crashes:
#0  0xff145dd8 in kill () from /lib/libc.so.1
No symbol table info available.
#1  <signal handler called>
No symbol table info available.
#2  0xfe9d555c in xdebug_var_export (struc=0xffbfe528, 
struc[@]entry=0xffbfe5ec, str=str[@]entry=0xffbfe59c, level=level[@]entry=1, 
debug_zval=debug_zval[@]entry=0,
     options=options[@]entry=0x2398c0) at 
/tmp/pear/temp/xdebug/xdebug_var.c:1005
         tmpz = 0x0
         myht = <optimized out>
         tmp_str = <optimized out>
         is_temp = 0
         num = <optimized out>
         key = <optimized out>
         val = <optimized out>
The tmpz 0x0 looks fishy to me, also I don't see how it could crash in 
this line (but it could in the next effective line). See below.
#3  0xfe9d5fac in xdebug_get_zval_value (val=val[@]entry=0xfd012550, 
debug_zval=debug_zval[@]entry=0, options=0x2398c0, options[@]entry=0x0)
     at /tmp/pear/temp/xdebug/xdebug_var.c:1168
         str = {l = 0, a = 0, d = 0x0}
         default_options = 1
#4  0xfe9d2764 in add_single_value (str=0xffbfe68c, zv=0xfd012550, 
collection_level=4) at /tmp/pear/temp/xdebug/xdebug_trace_textual.c:101
         tmp_value = <optimized out>
#5  0xfe9d2a58 in xdebug_trace_textual_function_entry (ctxt=0x203318, 
fse=0x397c40, function_nr=<optimized out>) at 
/tmp/pear/temp/xdebug/xdebug_trace_textual.c:182
         variadic_opened = <optimized out>
         variadic_count = 0
         context = 0x203318
         c = <optimized out>
         j = <optimized out>
         tmp_name = <optimized out>
         str = {l = 65, a = 1035, d = 0x397cc8 "    0.5717     418720 
       -> openssl_random_pseudo_bytes(32, "}
#6  0xfe9bbdc4 in xdebug_execute_internal 
(current_execute_data=0xfd012510, return_value=0xfd0124c0) at 
/tmp/pear/temp/xdebug/xdebug.c:1994
         edata = <optimized out>
         fse = 0x397c40
         do_return = 1
         function_nr = 140
         restore_error_handler_situation = 0
         tmp_error_cb = 0
#7  0xfdc17730 in ZEND_DO_FCALL_SPEC_HANDLER (execute_data=0xfd012370) 
at /.../php70/Zend/zend_vm_execute.h:844
         should_change_scope = 0
         opline = 0xfd09855c
         call = 0xfd012510
         fbc = 0x131bd8
         object = <optimized out>
         ret = <optimized out>
#8  0xfdc27f88 in ZEND_USER_OPCODE_SPEC_HANDLER 
(execute_data=0xfd012370) at /.../php70/Zend/zend_vm_execute.h:1589
         opline = <optimized out>
         ret = <optimized out>
#9  0xfdbc42fc in execute_ex (ex=<optimized out>) at 
/.../php70/Zend/zend_vm_execute.h:417
         ret = -50257040
         execute_data = 0xfd012370
If tmpz is 0x0 and struc is set to &tmpz, then in the next statement
   switch (Z_TYPE_P(*struc)) {
we use Z_TYPE_P() with argument 0x0, but Z_TYPE_P(zval_p) is defined as 
Z_TYPE(*(zval_p)), so that would crash.
Unfortunately when I added some debug statements to "xdebug_var.c", I no 
longer saw that 0x0 in tmpz.
Note that this is a 32 Bit build.
Thanks and regards,
Rainer
Received on Mon Dec 14 2015 - 17:45:27 GMT
This archive was generated by hypermail 2.2.0 : Mon Jun 25 2018 - 06:00:04 BST