Skip to content

Exception thrown in destructor during shutdown causes memory leak #22010

@arnaud-lb

Description

@arnaud-lb

Description

The following code:

class A {
    function __destruct() {
        throw new Exception();
    }
}

$a = new A;

Resulted in this output:

==1812075==ERROR: LeakSanitizer: detected memory leaks

Direct leak of 40 byte(s) in 1 object(s) allocated from:
    #0 0x0000004a8818 in malloc (sapi/cli/php+0x4a8818) (BuildId: e414f1239350aba6564003d39b1933a7981c13a3)
    #1 0x000002dec753 in __zend_malloc Zend/zend_alloc.c:3543:14
    #2 0x000002debde6 in _emalloc Zend/zend_alloc.c:2778:10
    #3 0x000003fa7786 in zend_objects_new Zend/zend_objects.c:190:24
    #4 0x000002e25dc3 in _object_and_properties_init Zend/zend_API.c:1819:22
    #5 0x000002e264b0 in object_init_ex Zend/zend_API.c:1842:9
    #6 0x00000389e125 in ZEND_NEW_SPEC_CONST_UNUSED_TAILCALL_HANDLER Zend/zend_vm_execute.h:63944:17
    #7 0x00000311dfb8 in execute_ex Zend/zend_vm_execute.h:110168:12
    #8 0x00000311f2bb in zend_execute Zend/zend_vm_execute.h:115586:2
    #9 0x0000040c16cf in zend_execute_script Zend/zend.c:1971:3
    #10 0x00000285c6d4 in php_execute_script_ex main/main.c:2646:13
    #11 0x00000285d088 in php_execute_script main/main.c:2686:9
    #12 0x0000040cdd00 in do_cli sapi/cli/php_cli.c:947:5
    #13 0x0000040cabd8 in main sapi/cli/php_cli.c:1370:18

Impact is likely low, since the heap is going to be freed at this point.

Found while investigating #21999.

PHP Version

master (c417deaf0f6e0a44da2315dd631b2f918a295782)

Operating System

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions