[php-src] Issue #11655: Segfault

From: Date: Mon, 10 Jul 2023 09:23:17 +0000
Subject: [php-src] Issue #11655: Segfault
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-244924@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/11655 Author: danog ### Description gdb backtrace: ``` (gdb) backtrace #0 0x0000561fa234fd48 in ZEND_INIT_NS_FCALL_BY_NAME_SPEC_CONST_HANDLER () at ./Zend/zend_vm_execute.h:56188 #1 execute_ex (ex=0x7fbe32a15630) at ./Zend/zend_vm_execute.h:56188 #2 0x0000561fa2354701 in zend_execute (op_array=0x7fbe32a7e000, return_value=0x0) at ./Zend/zend_vm_execute.h:60396 #3 0x0000561fa22e1e55 in zend_execute_scripts (type=type@entry=8, retval=retval@entry=0x0, file_count=file_count@entry=3) at ./Zend/zend.c:1827 #4 0x0000561fa227d3fa in php_execute_script (primary_file=<optimized out>) at ./main/main.c:2542 #5 0x0000561fa23cb50a in do_cli (argc=9, argv=0x561fa37bd170) at ./sapi/cli/php_cli.c:964 #6 0x0000561fa210dc5b in main (argc=9, argv=0x561fa37bd170) at ./sapi/cli/php_cli.c:1333 ``` zbacktrace: ``` (gdb) zbacktrace [0x7fbe32a15570] Zoon\Cache\Provider\Redis->getRedisClient() /zoon/zoon/vendor/zoon/cache/src/Provider/Redis.php:69 [0x7fbe32a15400] Zoon\Cache\Provider\Redis->getInternal("system_load_v2:z216:local_load", "") /zoon/zoon/vendor/zoon/cache/src/Provider/Redis.php:151 [0x7fbe32a15320] Zoon\Cache\Provider\CacheProvider->get("system_load_v2:z216:local_load", "") /zoon/zoon/vendor/zoon/cache/src/Provider/CacheProvider.php:144 ``` Redis.php:69 is weird, because it points to the array_key_exists in closeRedisConnection, not the getRedisClient function mentioned in the backtrace, which by the way have the following code ``` private function getRedisClient(): RedisClient { $pid = getmypid(); $serverKey = "{$pid}:{$this->params['host']}:{$this->params['port']}"; if (!array_key_exists($serverKey, self::$instances)) { self::$instances[$serverKey] = new RedisClient( $this->params['host'], $this->params['port'], $this->params['database'], $this->params['connect_timeout'], $this->params['max_reconnect'] ?? 0, ); } return self::$instances[$serverKey]; } private function closeRedisConnection() { $pid = getmypid(); $serverKey = "{$pid}:{$this->params['host']}:{$this->params['port']}"; if (array_key_exists($serverKey, self::$instances)) { try { self::$instances[$serverKey]->close(); } catch (\Throwable $e) { trigger_error($e->getMessage(), E_USER_WARNING); } finally { unset(self::$instances[$serverKey]); } } } ``` Feel free to tag me if further inspection of the coredump is neeed. ### PHP Version PHP 8.2.7 ### Operating System Ubuntu 20.04, ondrej repos

« previous php.bugs (#244924) next »