View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0001909 | Xdebug | Uncategorized | public | 2020-12-10 08:28 | 2020-12-10 12:22 |
| Reporter | Matthijs | Assigned To | derick | ||
| Priority | normal | Severity | crash | Reproducibility | always |
| Status | closed | Resolution | not fixable | ||
| Product Version | 3.0.1 | ||||
| Summary | 0001909: Segfault when out of memory on PHP8 | ||||
| Description | The attached script (https://github.com/Mattie112/xdebug_segfault) produces an out of memory and this crashes php/xdebug with a segfault: root@5130191b216a:/opt/project# php segfault.php When I use a clean php with no Xdebug I get an out of memory error. If you require any additional info please let me know. | ||||
| Steps To Reproduce | To reproduce: | ||||
| Additional Information | PHP 8.0.0 (cli) (built: Dec 1 2020 03:14:26) ( NTS ) (on docker on windows) | ||||
| Tags | No tags attached. | ||||
| Attached Files | valgrind.log (19,182 bytes)
==475== Memcheck, a memory error detector ==475== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==475== Using Valgrind-3.14.0 and LibVEX; rerun with -h for copyright info ==475== Command: php segfault.php ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x62CBFF: zend_hash_find (in /usr/local/bin/php) ==475== by 0x683AE6: zend_register_ini_entries (in /usr/local/bin/php) ==475== by 0x5B7996: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x683B3E: zend_register_ini_entries (in /usr/local/bin/php) ==475== by 0x5B7996: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x61EED1: zend_register_functions (in /usr/local/bin/php) ==475== by 0x61F6F6: ??? (in /usr/local/bin/php) ==475== by 0x61FD6D: zend_register_internal_class_ex (in /usr/local/bin/php) ==475== by 0x689D7E: ??? (in /usr/local/bin/php) ==475== by 0x6A0B1D: zend_register_default_classes (in /usr/local/bin/php) ==475== by 0x62E76A: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x6236F5: zend_declare_typed_property (in /usr/local/bin/php) ==475== by 0x623F65: zend_declare_property_ex (in /usr/local/bin/php) ==475== by 0x623FFA: zend_declare_property (in /usr/local/bin/php) ==475== by 0x624267: zend_declare_property_string (in /usr/local/bin/php) ==475== by 0x686E67: ??? (in /usr/local/bin/php) ==475== by 0x689DA9: ??? (in /usr/local/bin/php) ==475== by 0x6A0B1D: zend_register_default_classes (in /usr/local/bin/php) ==475== by 0x62E76A: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x623848: zend_declare_typed_property (in /usr/local/bin/php) ==475== by 0x623F65: zend_declare_property_ex (in /usr/local/bin/php) ==475== by 0x623FFA: zend_declare_property (in /usr/local/bin/php) ==475== by 0x624267: zend_declare_property_string (in /usr/local/bin/php) ==475== by 0x686E88: ??? (in /usr/local/bin/php) ==475== by 0x689DA9: ??? (in /usr/local/bin/php) ==475== by 0x6A0B1D: zend_register_default_classes (in /usr/local/bin/php) ==475== by 0x62E76A: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x62366B: zend_declare_typed_property (in /usr/local/bin/php) ==475== by 0x623F65: zend_declare_property_ex (in /usr/local/bin/php) ==475== by 0x623FFA: zend_declare_property (in /usr/local/bin/php) ==475== by 0x624267: zend_declare_property_string (in /usr/local/bin/php) ==475== by 0x686E67: ??? (in /usr/local/bin/php) ==475== by 0x689E8C: ??? (in /usr/local/bin/php) ==475== by 0x6A0B1D: zend_register_default_classes (in /usr/local/bin/php) ==475== by 0x62E76A: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x6244CA: zend_declare_class_constant_ex (in /usr/local/bin/php) ==475== by 0x62463F: zend_declare_class_constant (in /usr/local/bin/php) ==475== by 0x62486E: zend_declare_class_constant_stringl (in /usr/local/bin/php) ==475== by 0x3462E1: ??? (in /usr/local/bin/php) ==475== by 0x346BD3: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x62CBFF: zend_hash_find (in /usr/local/bin/php) ==475== by 0x61DDA6: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x62CBFF: zend_hash_find (in /usr/local/bin/php) ==475== by 0x623714: zend_declare_typed_property (in /usr/local/bin/php) ==475== by 0x623F65: zend_declare_property_ex (in /usr/local/bin/php) ==475== by 0x623FFA: zend_declare_property (in /usr/local/bin/php) ==475== by 0x624147: zend_declare_property_long (in /usr/local/bin/php) ==475== by 0x40E805: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x6291C9: zend_hash_del (in /usr/local/bin/php) ==475== by 0x623912: zend_declare_typed_property (in /usr/local/bin/php) ==475== by 0x623F65: zend_declare_property_ex (in /usr/local/bin/php) ==475== by 0x623FFA: zend_declare_property (in /usr/local/bin/php) ==475== by 0x624147: zend_declare_property_long (in /usr/local/bin/php) ==475== by 0x40E805: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x627557: zend_hash_add (in /usr/local/bin/php) ==475== by 0x5C0CEF: sapi_register_post_entry (in /usr/local/bin/php) ==475== by 0x5C0DC1: sapi_register_post_entries (in /usr/local/bin/php) ==475== by 0x47016E: ??? (in /usr/local/bin/php) ==475== by 0x683BBF: zend_register_ini_entries (in /usr/local/bin/php) ==475== by 0x470335: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x61F720: ??? (in /usr/local/bin/php) ==475== by 0x495525: ??? (in /usr/local/bin/php) ==475== by 0x491BFE: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x61F720: ??? (in /usr/local/bin/php) ==475== by 0x4D0201: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x61F720: ??? (in /usr/local/bin/php) ==475== by 0x61FD6D: zend_register_internal_class_ex (in /usr/local/bin/php) ==475== by 0x4C4E34: ??? (in /usr/local/bin/php) ==475== by 0x4B3DDA: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x623848: zend_declare_typed_property (in /usr/local/bin/php) ==475== by 0x58EEF8: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x623848: zend_declare_typed_property (in /usr/local/bin/php) ==475== by 0x58EF8E: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x61F720: ??? (in /usr/local/bin/php) ==475== by 0x596880: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x61F720: ??? (in /usr/local/bin/php) ==475== by 0x597374: ??? (in /usr/local/bin/php) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61DE8B: ??? (in /usr/local/bin/php) ==475== by 0x62AF71: zend_hash_apply (in /usr/local/bin/php) ==475== by 0x5B7A42: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x62CBFF: zend_hash_find (in /usr/local/bin/php) ==475== by 0x683AE6: zend_register_ini_entries (in /usr/local/bin/php) ==475== by 0x882B1FD: zm_startup_xdebug (xdebug.c:468) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61FC85: zend_startup_module (in /usr/local/bin/php) ==475== by 0x6259E4: ??? (in /usr/local/bin/php) ==475== by 0x60EA7E: zend_llist_apply_with_del (in /usr/local/bin/php) ==475== by 0x5B7A47: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694396: ??? (in /usr/local/bin/php) ==475== by 0x683B3E: zend_register_ini_entries (in /usr/local/bin/php) ==475== by 0x882B1FD: zm_startup_xdebug (xdebug.c:468) ==475== by 0x61DDFC: zend_startup_module_ex (in /usr/local/bin/php) ==475== by 0x61FC85: zend_startup_module (in /usr/local/bin/php) ==475== by 0x6259E4: ??? (in /usr/local/bin/php) ==475== by 0x60EA7E: zend_llist_apply_with_del (in /usr/local/bin/php) ==475== by 0x5B7A47: php_module_startup (in /usr/local/bin/php) ==475== by 0x6A6FAC: ??? (in /usr/local/bin/php) ==475== by 0x3456BE: ??? (in /usr/local/bin/php) ==475== by 0x547709A: (below main) (libc-start.c:308) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x62CBFF: zend_hash_find (in /usr/local/bin/php) ==475== by 0x6036D1: ??? (in /usr/local/bin/php) ==475== by 0x60265F: ??? (in /usr/local/bin/php) ==475== by 0x602842: ??? (in /usr/local/bin/php) ==475== by 0x603054: ??? (in /usr/local/bin/php) ==475== by 0x603828: ??? (in /usr/local/bin/php) ==475== by 0x60265F: ??? (in /usr/local/bin/php) ==475== by 0x5FE478: ??? (in /usr/local/bin/php) ==475== by 0x6068BD: ??? (in /usr/local/bin/php) ==475== by 0x6076B6: ??? (in /usr/local/bin/php) ==475== by 0x606A51: ??? (in /usr/local/bin/php) ==475== ==475== Conditional jump or move depends on uninitialised value(s) ==475== at 0x694062: zend_string_equal_val (in /usr/local/bin/php) ==475== by 0x694136: ??? (in /usr/local/bin/php) ==475== by 0x5F5ACB: ??? (in /usr/local/bin/php) ==475== by 0x5F5B88: ??? (in /usr/local/bin/php) ==475== by 0x603733: ??? (in /usr/local/bin/php) ==475== by 0x60265F: ??? (in /usr/local/bin/php) ==475== by 0x602842: ??? (in /usr/local/bin/php) ==475== by 0x603054: ??? (in /usr/local/bin/php) ==475== by 0x603828: ??? (in /usr/local/bin/php) ==475== by 0x60265F: ??? (in /usr/local/bin/php) ==475== by 0x5FE478: ??? (in /usr/local/bin/php) ==475== by 0x6068BD: ??? (in /usr/local/bin/php) ==475== Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9000 (through xdebug.client_host/xdebug.client_port) :-( ==475== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==475== ==475== Process terminating with default action of signal 11 (SIGSEGV) ==475== Access not within mapped region at address 0x1FFE801FB0 ==475== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==475== at 0x67C731: execute_ex (in /usr/local/bin/php) ==475== If you believe this happened as a result of a stack ==475== overflow in your program's main thread (unlikely but ==475== possible), you can try to increase the size of the ==475== main thread stack using the --main-stacksize= flag. ==475== The main thread stack size used in this run was 8388608. ==475== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==475== ==475== Process terminating with default action of signal 11 (SIGSEGV) ==475== Access not within mapped region at address 0x1FFE801FA8 ==475== Stack overflow in thread #1: can't grow stack to 0x1ffe801000 ==475== at 0x482B110: _vgnU_freeres (vg_preloaded.c:59) ==475== If you believe this happened as a result of a stack ==475== overflow in your program's main thread (unlikely but ==475== possible), you can try to increase the size of the ==475== main thread stack using the --main-stacksize= flag. ==475== The main thread stack size used in this run was 8388608. ==475== ==475== HEAP SUMMARY: ==475== in use at exit: 8,623,670 bytes in 51,894 blocks ==475== total heap usage: 85,581 allocs, 33,687 frees, 21,765,755 bytes allocated ==475== ==475== LEAK SUMMARY: ==475== definitely lost: 8,000 bytes in 250 blocks ==475== indirectly lost: 0 bytes in 0 blocks ==475== possibly lost: 1,673,864 bytes in 13,878 blocks ==475== still reachable: 6,941,806 bytes in 37,766 blocks ==475== suppressed: 0 bytes in 0 blocks ==475== Rerun with --leak-check=full to see details of leaked memory ==475== ==475== For counts of detected and suppressed errors, rerun with: -v ==475== Use --track-origins=yes to see where uninitialised values come from ==475== ERROR SUMMARY: 288 errors from 22 contexts (suppressed: 0 from 0) docker-compose.yml (160 bytes)
version: '3.5'
services:
php8:
build:
context: ./
dockerfile: ./Dockerfile
volumes:
- ./:/opt/project
working_dir: /opt/project
Dockerfile (192 bytes)
FROM php:8.0-cli COPY --from=mlocati/php-extension-installer /usr/bin/install-php-extensions /usr/local/bin/ RUN install-php-extensions xdebug COPY ./xdebug.ini $PHP_INI_DIR/conf.d/xdebug.ini segfault.php (167 bytes)
<?php
$input[] = 1;
segfault($input);
function segfault($input)
{
foreach ($input as $i => $foo) {
segfault(array_slice($input, $i));
}
}
| ||||
| Operating System | |||||
| PHP Version | 8.0.0-8.0.4 | ||||
|
|
This is called a StackOverflow, which happens if a function recursively calls itself without break clause. In older versions of PHP, this would also crash regardless of whether Xdebug was loaded. Newer versions of PHP don't use stack recursion in many cases, which means that the memory limit kicks in before the stack overflows. However, that trick can only work if no extensions are loaded that hook into PHP's executor, for example Xdebug. Before Xdebug 3, Xdebug would automatically abort this sort of infinite recursion (configurable through the xdebug.max_nesting_level setting), wheras in Xdebug 3 this only happens with the "develop" mode is turned on. If you change your xdebug.mode line to "xdebug.mode=develop,debug" you will get a warning and no segfault. Because technically PHP does not have stack overflow protection, it is not possible to guard against this, or make a fix - except for setting an arbitrary limit (through xdebug's max_nesting_level). However, this brings overhead which is why in Xdebug 3 this protection is only available when "develop" is part of the enabled modes. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2020-12-10 08:28 | Matthijs | New Issue | |
| 2020-12-10 08:28 | Matthijs | File Added: valgrind.log | |
| 2020-12-10 08:28 | Matthijs | File Added: xdebug.ini | |
| 2020-12-10 08:28 | Matthijs | File Added: crash.log | |
| 2020-12-10 08:28 | Matthijs | File Added: docker-compose.yml | |
| 2020-12-10 08:28 | Matthijs | File Added: Dockerfile | |
| 2020-12-10 08:28 | Matthijs | File Added: segfault.php | |
| 2020-12-10 12:22 | derick | Assigned To | => derick |
| 2020-12-10 12:22 | derick | Status | new => closed |
| 2020-12-10 12:22 | derick | Resolution | open => not fixable |
| 2020-12-10 12:22 | derick | Note Added: 0005576 |