[php-src] Issue #12482: Abortion with tracing JIT
| From: | danog | Date: | Thu, 19 Oct 2023 20:38:05 +0000 |
| Subject: | [php-src] Issue #12482: Abortion with tracing JIT | ||
| Groups: | php.bugs | ||
| Request: | Send a blank email to php-bugs+get-245611@lists.php.net to get a copy of this message | ||
Issue: https://github.com/php/php-src/issues/12482
Author: danog
### Description
The following code: https://github.com/nicelocal/psalm/tree/rector_pass
(a fork of Psalm, commit 9d3fee47afa90f3eb53043a26f01e587d2dd34e5)
Running using:
```
PSALM_ALLOW_XDEBUG=1 USE_ZEND_ALLOC=0 gdb --args php-asan ./psalm --no-cache
```
With this config:
```
memory_limit = -1
zend.assertions = 1
display_errors = On
display_startup_errors = On
;extension=uv
extension=gmp
extension=iconv
[opcache]
zend_extension=opcache
opcache.memory_consumption=4096M
opcache.enable=1
opcache.enable_cli=1
opcache.jit=tracing
opcache.validate_timestamps=0
opcache.jit_buffer_size=1G
opcache.file_update_protection=0
opcache.max_accelerated_files=1000000
opcache.interned_strings_buffer=64
;opcache.jit_debug=28672
;opcache.jit_debug=16384
opcache.jit_debug=256
opcache.jit_prof_threshold=0.000000001
opcache.jit_max_root_traces= 30000000
opcache.jit_max_side_traces= 30000000
opcache.jit_max_exit_counters=30000000
opcache.jit_hot_loop=1
opcache.jit_hot_func=1
opcache.jit_hot_return=1
opcache.jit_hot_side_exit=1
opcache.jit_blacklist_root_trace=255
opcache.jit_blacklist_side_trace=255
opcache.protect_memory=1
```
Resulted in this output:
```
Program received signal SIGABRT, Aborted.
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6,
no_tid=no_tid@entry=0) at pthread_kill.c:44
44 return INTERNAL_SYSCALL_ERROR_P (ret) ? INTERNAL_SYSCALL_ERRNO (ret) : 0;
(gdb) back
#0 __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6,
no_tid=no_tid@entry=0) at pthread_kill.c:44
#1 0x00007ffff6ffa8a3 in __pthread_kill_internal (signo=6, threadid=<optimized out>) at
pthread_kill.c:78
#2 0x00007ffff6faa668 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3 0x00007ffff6f924b8 in __GI_abort () at abort.c:79
#4 0x00007fffb180a457 in TRACE-1550$Psalm\Type\Union::getSingleAtomic$1527 () at unknown:1
#5 0x00007ffff48035f8 in ?? ()
#6 0x00007ffff48035f0 in ?? ()
#7 0x00007ffff48035f0 in ?? ()
#8 0x00000000f48035f0 in ?? ()
#9 0x5dfaca7550574600 in ?? ()
#10 0x0000000173596764 in ?? ()
#11 0x00007ffff4803800 in ?? ()
#12 0x0000555557d28798 in ?? ()
#13 0x00007ffff7ffd000 in ?? () from /lib64/ld-linux-x86-64.so.2
#14 0x00007fffffffde88 in ?? ()
#15 0x0000000000000000 in ?? ()
(gdb) zback
[0x7ffff4803830] Psalm\Type\Union->getSingleAtomic()
/home/daniil/repos/psalm/src/Psalm/Type/UnionTrait.php:1527
[0x7ffff48035f0]
Psalm\Internal\Analyzer\Statements\Expression\SimpleTypeInferer->infer(object[0x7ffff4803640],
object[0x7ffff4803650],
object[0x7ffff4803660], object[0x7ffff4803670], NULL, array(0)[0x7ffff4803690],
"Composer\Autoload\ComposerStaticInitee60cb38244924a30b9a4f1eb3dba
```
But I expected this output instead: no abortion.
ping @dstogo
### PHP Version
745a34646f20f0f0fc77a9223bc5fc57a975a957
### Operating System
Arch linux