ext-openswoole
ext-openswoole copied to clipboard
Problem with PHP's tracing JIT + cURL Multi + OpenSwoole
- What did you do? If possible, provide a simple script for reproducing the error.
When using PHP's tracing JIT (with opcache.jit=tracing
or opcache.jit=1255
) with OpenSwoole and cURL Multi, it fails, either by returning a Invalid multi handle
error from cURL or by dumping core.
Using either opcache.jit=1235
(T=3, Profile on the fly and compile hot functions
) or opcache.jit=1251
(O=1, Minimal JIT (call standard VM handlers)
) both work fine (as does anything less performant than either of these settings).
- What did you expect to see?
Getting Parallel Url=https://www.smugmug.com/
Getting Parallel Url=https://www.flickr.com/
Done with curl_multi_exec Uri=https://www.flickr.com/ ResponseCode=200
Done with curl_multi_exec Uri=https://www.smugmug.com/ ResponseCode=200
Getting serial URL=https://www.smugmug.com/
Done with curl_multi_exec Uri=https://www.smugmug.com/ ResponseCode=200
Getting serial URL=https://www.flickr.com/
Done with curl_multi_exec Uri=https://www.flickr.com/ ResponseCode=200
Getting Parallel Url=https://www.smugmug.com/
Getting Parallel Url=https://www.flickr.com/
Done with curl_multi_exec Uri=https://www.flickr.com/ ResponseCode=200
Done with curl_multi_exec Uri=https://www.smugmug.com/ ResponseCode=200
Done!
- What did you see instead?
Getting Parallel Url=https://www.smugmug.com/
Getting Parallel Url=https://www.flickr.com/
Done with curl_multi_exec Uri=https://www.smugmug.com/ ResponseCode=200
Done with curl_multi_exec Uri=https://www.flickr.com/ ResponseCode=200
Getting serial URL=https://www.smugmug.com/
Done with curl_multi_exec Uri=https://www.smugmug.com/ ResponseCode=200
Getting serial URL=https://www.flickr.com/
Done with curl_multi_exec Uri=https://www.flickr.com/ ResponseCode=200
Getting Parallel Url=https://www.smugmug.com/
ERROR! Invalid multi handle
or
Getting Parallel Url=https://www.smugmug.com/
Getting Parallel Url=https://www.flickr.com/
Done with curl_multi_exec Uri=https://www.smugmug.com/ ResponseCode=200
Done with curl_multi_exec Uri=https://www.flickr.com/ ResponseCode=200
Getting serial URL=https://www.smugmug.com/
Segmentation fault (core dumped)
- What version of OpenSwoole are you using (show your
php --ri openswoole
)?
openswoole
Open Swoole => enabled
Author => Open Swoole Group <[email protected]>
Version => 22.0.0
Built => Apr 21 2023 20:00:16
coroutine => enabled with boost asm context
epoll => enabled
eventfd => enabled
signalfd => enabled
cpu_affinity => enabled
spinlock => enabled
rwlock => enabled
sockets => enabled
openssl => OpenSSL 1.1.1 11 Sep 2018
dtls => enabled
http2 => enabled
hook-curl => enabled
pcre => enabled
mutex_timedlock => enabled
pthread_barrier => enabled
futex => enabled
mysqlnd => enabled
Directive => Local Value => Master Value
openswoole.enable_coroutine => On => On
openswoole.enable_preemptive_scheduler => Off => Off
openswoole.display_errors => On => On
openswoole.unixsock_buffer_size => 8388608 => 8388608
- What is your machine environment used (show your
uname -a
&php -v
&gcc -v
) ?
This issue happens on both Ubuntu Bionic 18.04 and Ubuntu Jammy 22.04.
uname -a
(Ubuntu Bionic):
Linux 914d33c414d6 5.15.0-1014-aws #18-Ubuntu SMP Wed Jun 15 20:06:08 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
uname -a
(Ubuntu Jammy):
Linux 0921e394afb6 5.15.0-1014-aws #18-Ubuntu SMP Wed Jun 15 20:06:08 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
php -v
(same on both):
PHP 8.1.9 (cli) (built: Aug 13 2022 01:10:42) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.9, Copyright (c) Zend Technologies
with Zend OPcache v8.1.9, Copyright (c), by Zend Technologies
gcc -v
(Ubuntu Bionic):
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 7.5.0-3ubuntu1~18.04' --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
gcc -v
(Ubuntu Jammy):
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/11/lto-wrapper
Target: aarch64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 11.3.0-1ubuntu1~22.04' --with-bugurl=file:///usr/share/doc/gcc-11/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++,m2 --prefix=/usr --with-gcc-major-version-only --program-suffix=-11 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-serialization=2
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.3.0 (Ubuntu 11.3.0-1ubuntu1~22.04)
php --ri curl
(Ubuntu Bionic):
curl
cURL support => enabled
cURL Information => 7.58.0
Age => 4
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => Yes
HTTPS_PROXY => Yes
MULTI_SSL => No
BROTLI => No
Protocols => dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtmp, rtsp, smb, smbs, smtp, smtps, telnet, tftp
Host => aarch64-unknown-linux-gnu
SSL Version => OpenSSL/1.1.1
ZLib Version => 1.2.11
Directive => Local Value => Master Value
curl.cainfo => no value => no value
php --ri curl
(Ubuntu Jammy):
curl
cURL support => enabled
cURL Information => 7.81.0
Age => 9
Features
AsynchDNS => Yes
CharConv => No
Debug => No
GSS-Negotiate => No
IDN => Yes
IPv6 => Yes
krb4 => No
Largefile => Yes
libz => Yes
NTLM => Yes
NTLMWB => Yes
SPNEGO => Yes
SSL => Yes
SSPI => No
TLS-SRP => Yes
HTTP2 => Yes
GSSAPI => Yes
KERBEROS5 => Yes
UNIX_SOCKETS => Yes
PSL => Yes
HTTPS_PROXY => Yes
MULTI_SSL => No
BROTLI => Yes
Protocols => dict, file, ftp, ftps, gopher, gophers, http, https, imap, imaps, ldap, ldaps, mqtt, pop3, pop3s, rtmp, rtsp, scp, sftp, smb, smbs, smtp, smtps, telnet, tftp
Host => aarch64-unknown-linux-gnu
SSL Version => OpenSSL/3.0.2
ZLib Version => 1.2.11
libSSH Version => libssh/0.9.6/openssl/zlib
Directive => Local Value => Master Value
curl.cainfo => no value => no value