php 5.6 built with clang 6 segfaults at runtime if opcache is used
(same with the in-tree version and a locally-built update to 5.6.35).
Packages built with old clang do work ok on the same kernel that the
new ones fail with.
Seems okay if opcache is not enabled. Seems okay in 7.0.
Does anyone have an idea what might be going on? In the absence of
anything better I'm currently trying to figure out how to compile
various files with a different compiler to try to narrow things down
to a particular file.
Example backtrace:
(gdb) bt
#0 0x00000d96cb832f53 in zend_block_optimization (op_array=Variable "op_array"
is not available.
)
at block_pass.c:1902
#1 0x00000d96cb830a8a in zend_optimize (op_array=Variable "op_array" is not
available.
) at pass5.c:2
#2 0x00000d96cb82dad2 in zend_accel_optimize (op_array=0xd9664740a38,
script=Variable "script" is not available.
)
at
/usr/obj/ports/php-5.6.35/php-5.6.35/ext/opcache/Optimizer/zend_optimizer.c:586
#3 0x00000d96cb82d897 in zend_accel_script_optimize (script=0xd9664740a20)
at
/usr/obj/ports/php-5.6.35/php-5.6.35/ext/opcache/Optimizer/zend_optimizer.c:633
#4 0x00000d96cb821d7b in compile_and_cache_file (file_handle=Variable
"file_handle" is not available.
)
at ZendAccelerator.c:1165
#5 0x00000d96cb821674 in persistent_compile_file (
file_handle=0x7f7ffffdcf48, type=8) at ZendAccelerator.c:1680
#6 0x00000d943a70c10e in zend_execute_scripts (type=8, retval=0x0,
file_count=3) at zend.c:1333
#7 0x00000d943a6a9b36 in php_execute_script (primary_file=Variable
"primary_file" is not available.
) at main.c:2613
#8 0x00000d943a79c0fd in do_cli (argc=Variable "argc" is not available.
) at php_cli.c:999
#9 0x00000d943a79b03f in main (argc=2, argv=0x7f7ffffdd588)
at php_cli.c:1383
Tail of kdump:
42144 php-5.6 CALL lseek(4,0,SEEK_CUR)
42144 php-5.6 RET lseek 5766/0x1686
42144 php-5.6 CALL fcntl(4,F_ISATTY)
42144 php-5.6 RET fcntl -1 errno 25 Inappropriate ioctl for device
42144 php-5.6 CALL fstat(4,0x7f7ffffd0070)
42144 php-5.6 STRU struct stat { dev=1037, ino=947378, mode=-rwxr-xr-x ,
nlink=1, uid=0<"root">, gid=7<"bin">, rdev=3812237, atime=1524224156<"Apr 20
12:35:56 2018">.361714097, mtime=1524095986<"Apr 19 00:59:46 2018">,
ctime=1524217255<"Apr 20 10:40:55 2018">.710145907, size=5766, blocks=16,
blksize=32768, flags=0x0, gen=0x0 }
42144 php-5.6 RET fstat 0
42144 php-5.6 CALL mmap(0,0x16a6,0x1<PROT_READ>,0x2<MAP_PRIVATE>,4,0)
42144 php-5.6 RET mmap 33848217530368/0x1ec8e6fb7000
42144 php-5.6 CALL
mmap(0,0x40000,0x3<PROT_READ|PROT_WRITE>,0x1002<MAP_PRIVATE|MAP_ANON>,-1,0)
42144 php-5.6 RET mmap 33850099900416/0x1ec9572e2000
42144 php-5.6 CALL kbind(0x7f7ffffd02a0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd02c0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd02c0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd02c0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd02c0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd0130,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd0130,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd00a0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffd0130,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffcfba0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 CALL kbind(0x7f7ffffcfba0,24,0xc153e7a574fb2071)
42144 php-5.6 RET kbind 0
42144 php-5.6 PSIG SIGSEGV SIG_DFL code SEGV_MAPERR<1> addr=0x1ec9e4bb60ed
trapno=6
42144 php-5.6 NAMI "php-5.6.core"