|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2021-04-19 02:09 UTC] ryan dot brothers at gmail dot com
Description:
------------
I am seeing a few segfaults when running PHP 8.0.3 with JIT enabled under nginx/php-fpm on CentOS 8. I'm not sure if all the segfaults I'm getting are related, but I've been able to reproduce one of them so far.
To reproduce, set-up scripts 1.php and 2.php as listed, and then go to 1.php via nginx/php-fpm. You may have to hit the URL a few times to get the segfault.
My php.ini has:
opcache.jit = tracing
opcache.jit_buffer_size = 100M
Please let me know if I can give any more info to help reproduce it.
Thank you for your help.
Test script:
---------------
1.php:
<?php
class c1
{
public static function __callStatic($method_name, $arguments)
{
return require('2.php');
}
}
$data = array(1, 2);
for ($i = 0; $i < 100; $i++)
{
c1::test($data);
}
=======
2.php:
<?php
if (is_array($arguments[0]) == true)
{
foreach ($arguments[0] as $item)
{
c1::test($item);
}
}
return $arguments[0];
Expected result:
----------------
No output.
Actual result:
--------------
nginx returns "An error occurred."
php-fpm.log has:
[18-Apr-2021 21:53:25] WARNING: [pool www] child 193586 exited on signal 11 (SIGSEGV) after 11.391747 seconds from start
/var/log/messages has:
Apr 18 21:53:25 server1 kernel: traps: php-fpm[193586] general protection fault ip:55fa3e1d2dbf sp:7ffe87e6d8c0 error:0 in php-fpm[55fa3e0e4000+11c000]
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 15:00:01 2025 UTC |
Slightly reduced variant just to show that this has no relation to __callStatic trampolines: 1.php <?php function foo($arguments) { var_dump(require('2.php')); } for ($i = 0; $i < 100; $i++) { foo([[1, 2]]); } 2.php <?php if (is_array($arguments[0])) { foreach ($arguments[0] as $item) { foo([$item]); } } return $arguments[0];