Hi Anatol,

I created a new clone of the repository and I do get the _live_range references.

frank@dev Source]$ git clone http://git.php.net/repository/php-src.git php-tmp
Cloning into 'php-tmp'...
remote: Counting objects: 640667, done.
remote: Compressing objects: 100% (128774/128774), done.
remote: Total 640667 (delta 512461), reused 638458 (delta 510563)
Receiving objects: 100% (640667/640667), 160.17 MiB | 31.95 MiB/s, done.
Resolving deltas: 100% (512461/512461), done.
[frank@dev Source]$ cd php-tmp/
[frank@dev php-tmp]$ grep -rn _live_range Zend/
Zend/zend_opcode.c:83:    op_array->last_live_range = 0;
Zend/zend_compile.h:176:typedef struct _zend_live_range {
Zend/zend_compile.h:179:} zend_live_range;
Zend/zend_compile.h:364:    int last_live_range;
Zend/zend_compile.h:366:    zend_live_range *live_range;
Zend/zend_compile.c:579:static uint32_t zend_start_live_range(zend_op_array *op_array, uint32_t start) /* {{{ */
Zend/zend_compile.c:581:    zend_live_range *range;
Zend/zend_compile.c:583:    op_array->last_live_range++;
Zend/zend_compile.c:584: op_array->live_range = erealloc(op_array->live_range, sizeof(zend_live_range) * op_array->last_live_range); Zend/zend_compile.c:585: range = op_array->live_range + op_array->last_live_range - 1;
Zend/zend_compile.c:587:    return op_array->last_live_range - 1;
Zend/zend_compile.c:591:static void zend_end_live_range(zend_op_array *op_array, uint32_t offset, uint32_t end) /* {{{ */ Zend/zend_compile.c:593: zend_live_range *range = op_array->live_range + offset; Zend/zend_compile.c:595: if (range->start == end && offset == op_array->last_live_range - 1) {
Zend/zend_compile.c:596:        op_array->last_live_range--;
Zend/zend_compile.c:619: info.u.live_range_offset = zend_start_live_range(CG(active_op_array), start); Zend/zend_compile.c:643: zend_end_live_range(CG(active_op_array), loop_var->u.live_range_offset, end); Zend/zend_compile.c:6472: range = zend_start_live_range(CG(active_op_array), get_next_op_number(CG(active_op_array))); Zend/zend_compile.c:6485: zend_end_live_range(CG(active_op_array), range, get_next_op_number(CG(active_op_array))); Zend/zend_compile.c:6807: uint32_t range = zend_start_live_range(CG(active_op_array), rope_init_lineno); Zend/zend_compile.c:6822: zend_end_live_range(CG(active_op_array), range, opline - CG(active_op_array)->opcodes); Zend/zend_execute.c:2552: for (i = 0; i < EX(func)->op_array.last_live_range; i++) { Zend/zend_execute.c:2553: const zend_live_range *range = &EX(func)->op_array.live_range[i];


- Frank

On 11/11/15 12:02, Anatol Belski wrote:

-----Original Message-----
From: Frank M. Kromann [mailto:f...@webbypixel.com]
Sent: Wednesday, November 11, 2015 8:51 PM
To: Anatol Belski <anatol....@belski.net>; 'Dmitry Stogov' <dmi...@zend.com>
Cc: 'PHP Internals' <internals@lists.php.net>
Subject: Re: [PHP-DEV] PHP 7 Segmentation fault

Just switched to PHP-7.0 and there is no longer any references to _live_range
but the problem with the segfault is still there. Here is a new backtrace.

#0  zend_mm_alloc_small (size=<optimized out>, bin_num=<optimized out>,
heap=<optimized out>) at /home/frank/Source/php-src-
7/Zend/zend_alloc.c:1291
#1  zend_mm_alloc_heap (size=<optimized out>, heap=<optimized out>) at
/home/frank/Source/php-src-7/Zend/zend_alloc.c:1358
#2  _emalloc (size=2) at /home/frank/Source/php-src-7/Zend/zend_alloc.c:2442
#3  0x00000000007e724d in _safe_emalloc (nmemb=nmemb@entry=24,
size=<optimized out>, offset=offset@entry=0) at
/home/frank/Source/php-src-7/Zend/zend_alloc.c:2510
#4  0x00000000007f0b93 in zend_compile_params
(ast=ast@entry=0x7ffff0ab7250,
return_type_ast=return_type_ast@entry=0x0) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:4429
#5  0x00000000007fa240 in zend_compile_func_decl (result=result@entry=0x0,
ast=ast@entry=0x7ffff0ab7668) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:4879
#6  0x00000000007f799a in zend_compile_stmt (ast=0x7ffff0ab7668) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:7048
#7  0x00000000007f8487 in zend_compile_stmt_list
(ast=ast@entry=0x7ffff0ab8388) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:4347
#8  0x00000000007f781e in zend_compile_stmt
(ast=ast@entry=0x7ffff0ab8388) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:6992
#9  0x00000000007f88bf in zend_compile_class_decl
(ast=ast@entry=0x7ffff0ab8720) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:5289
#10 0x00000000007f7938 in zend_compile_stmt
(ast=ast@entry=0x7ffff0ab8720) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:7060
#11 0x00000000007fa67a in zend_compile_top_stmt (ast=0x7ffff0ab8720) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:6966
#12 0x00000000007fa6bf in zend_compile_top_stmt (ast=0x7ffff0ab4018) at
/home/frank/Source/php-src-7/Zend/zend_compile.c:6961
#13 0x00000000007cde07 in compile_file (file_handle=<optimized out>,
type=<optimized out>) at Zend/zend_language_scanner.l:607
#14 0x000000000065434e in phar_compile_file (file_handle=<optimized
out>, type=<optimized out>) at
/home/frank/Source/php-src-7/ext/phar/phar.c:3311
#15 0x00000000007cdf35 in compile_filename (type=2,
filename=filename@entry=0x7ffff0a14550) at
Zend/zend_language_scanner.l:647
#16 0x0000000000899a2f in ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER ()
at
/home/frank/Source/php-src-7/Zend/zend_vm_execute.h:29114
#17 0x000000000084cecb in execute_ex (ex=<optimized out>) at
/home/frank/Source/php-src-7/Zend/zend_vm_execute.h:414
#18 0x00000000007fe607 in zend_call_function (fci=0x7ffff0a89aa0,
fci@entry=0x7fffffffa8f0, fci_cache=fci_cache@entry=0x7fffffffa8c0)
      at /home/frank/Source/php-src-7/Zend/zend_execute_API.c:854
#19 0x000000000082b244 in zend_call_method (object=0x7ffff0aa38d8,
obj_ce=<optimized out>, fn_proxy=<optimized out>,
      function_name=0x7ffff0aaf108
"composer\\autoload\\classloader::loadclass\001",
function_name_len=<optimized out>, retval_ptr=retval_ptr@entry=0x0,
      param_count=param_count@entry=1, arg1=0x7ffff0a14430,
arg2=arg2@entry=0x0) at
/home/frank/Source/php-src-7/Zend/zend_interfaces.c:104
#20 0x00000000006c1324 in zif_spl_autoload_call (execute_data=<optimized
out>, return_value=<optimized out>) at
/home/frank/Source/php-src-7/ext/spl/php_spl.c:425
#21 0x00000000007fe6a0 in zend_call_function (fci=fci@entry=0x7fffffffab40,
fci_cache=fci_cache@entry=0x7fffffffab10)
at /home/frank/Source/php-src-7/Zend/zend_execute_API.c:873
#22 0x00000000007feec9 in zend_lookup_class_ex
(name=name@entry=0x7ffff0a55e80, key=0x7ffff0a70420,
use_autoload=use_autoload@entry=1)
      at /home/frank/Source/php-src-7/Zend/zend_execute_API.c:1036
#23 0x00000000007ffa18 in zend_fetch_class_by_name
(class_name=0x7ffff0a55e80, key=<optimized out>,
fetch_type=fetch_type@entry=512)
      at /home/frank/Source/php-src-7/Zend/zend_execute_API.c:1383
#24 0x000000000089af51 in ZEND_NEW_SPEC_CONST_HANDLER () at
/home/frank/Source/php-src-7/Zend/zend_vm_execute.h:3354
#25 0x000000000084cecb in execute_ex (ex=<optimized out>) at
/home/frank/Source/php-src-7/Zend/zend_vm_execute.h:414
#26 0x000000000089d969 in zend_execute (op_array=<optimized out>,
return_value=<optimized out>) at
/home/frank/Source/php-src-7/Zend/zend_vm_execute.h:458
#27 0x000000000080db37 in zend_execute_scripts (type=type@entry=8,
retval=retval@entry=0x0, file_count=file_count@entry=3) at
/home/frank/Source/php-src-7/Zend/zend.c:1428
#28 0x00000000007a2ae0 in php_execute_script
(primary_file=primary_file@entry=0x7fffffffd070) at
/home/frank/Source/php-src-7/main/main.c:2471
#29 0x000000000089f78a in do_cli (argc=4, argv=0x1167c60) at
/home/frank/Source/php-src-7/sapi/cli/php_cli.c:974
#30 0x0000000000443467 in main (argc=4, argv=0x1167c60) at
/home/frank/Source/php-src-7/sapi/cli/php_cli.c:1345

Ok, but in master there's no zend_add_live_range() as well, so that is what was 
strange. Could you please USE_ZEND_ALLOC=0 to collect the BT?

Thanks

Anatol



--
Frank M. Kromann, M.Sc.E.E.
Web by Pixel, Inc.

Phone: +1 949 742 7533
Fax: +1 949 742 7534
Cell: +1 949 702 1794
Denmark: +45 78 79 11 48

Web: http://webbypixel.com

Reply via email to