[php-src] Issue #20894: Heap-buffer-overflow in zval_ptr_dtor_nogc during Fiber/Generator execution in destructor

[email protected] (vi3tL0u1s)
Newsgroups php.bugs
Message-ID <[email protected]>
Issue: https://github.com/php/php-src/issues/20894
Author: vi3tL0u1s

### Description

The following code:

```php
<?php
class a {
    function __destruct() {
        static $gen = (function() {
            $from = (function () {
                !$v =& min(0, $x);
                x:$n[] = new a;
                y;
                yield;
            })();
            try { yield from $from; } finally { $y>next(); }
        })();
        $fiber = new Fiber(function () use ($gen) {
            $gen->current();
            $gen->next();
        });
        $fiber->start();
    }
}
new a;
```

### Crash Output (with `USE_ZEND_ALLOC=0`)

```
==PID==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x511000002ce9
READ of size 1 at 0x511000002ce9 thread T0
    #0 in zval_ptr_dtor_nogc /path/to/php-src/Zend/zend_variables.h:35
    #1 in ZEND_HANDLE_EXCEPTION_SPEC_HANDLER /path/to/php-src/Zend/zend_vm_execute.h:3450
    #2 in execute_ex /path/to/php-src/Zend/zend_vm_execute.h:116576
    #3 in zend_generator_resume /path/to/php-src/Zend/zend_generators.c:844
    #4 in zend_generator_ensure_initialized /path/to/php-src/Zend/zend_generators.c:900
    #5 in zim_Generator_current /path/to/php-src/Zend/zend_generators.c:955
    ...

0x511000002ce9 is located 9 bytes to the right of 224-byte region
allocated by thread T0 here:
    #0 in __interceptor_malloc
    #1 in __zend_malloc /path/to/php-src/Zend/zend_alloc.c:3543
    #2 in _emalloc /path/to/php-src/Zend/zend_alloc.c:2780
    #3 in ZEND_GENERATOR_CREATE_SPEC_HANDLER /path/to/php-src/Zend/zend_vm_execute.h:2354
    ...

SUMMARY: AddressSanitizer: heap-buffer-overflow /path/to/php-src/Zend/zend_variables.h:35 in zval_ptr_dtor_nogc
```

## Commit

`c518a6ba8bf7a3eb6551424c7ca90dfa06b01b15`

## Configurations

```
./configure --enable-debug --enable-address-sanitizer --disable-shared --with-pic --enable-mbstring --with-zlib
```


### PHP Version

```plain
PHP 8.6.0-dev (cli) (built: Jan  9 2026 14:43:36) (NTS DEBUG)
Copyright (c) The PHP Group
Zend Engine v4.6.0-dev, Copyright (c) Zend Technologies
    with Zend OPcache v8.6.0-dev, Copyright (c), by Zend Technologies
```

### Operating System

Ubuntu 22.04
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.