View Issue Details

IDProjectCategoryView StatusLast Update
0001909XdebugUncategorizedpublic2020-12-10 12:22
ReporterMatthijs Assigned Toderick  
PrioritynormalSeveritycrashReproducibilityalways
Status closedResolutionnot fixable 
Product Version3.0.1 
Summary0001909: 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
Xdebug: [Step Debug] Could not connect to debugging client. Tried: localhost:9000 (through xdebug.client_host/xdebug.client_port) :-(
Segmentation fault
root@5130191b216a:/opt/project#

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:
docker-compose build
docker-compose run --rm php8 bash
php segfault.php

Additional Information

PHP 8.0.0 (cli) (built: Dec 1 2020 03:14:26) ( NTS )
Copyright (c) The PHP Group
Zend Engine v4.0.0-dev, Copyright (c) Zend Technologies
with Xdebug v3.0.1, Copyright (c) 2002-2020, by Derick Rethans

(on docker on windows)

TagsNo 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)
valgrind.log (19,182 bytes)   
xdebug.ini (72 bytes)   
xdebug.mode=debug
xdebug.client_port=9000
xdebug.start_with_request=yes
xdebug.ini (72 bytes)   
crash.log (611,026 bytes)
docker-compose.yml (160 bytes)   
version: '3.5'
services:
  php8:
    build:
      context: ./
      dockerfile: ./Dockerfile
    volumes:
      - ./:/opt/project
    working_dir: /opt/project
docker-compose.yml (160 bytes)   
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
Dockerfile (192 bytes)   
segfault.php (167 bytes)   
<?php
$input[] = 1;

segfault($input);

function segfault($input)
{
    foreach ($input as $i => $foo) {
        segfault(array_slice($input, $i));
    }
}
segfault.php (167 bytes)   
Operating System
PHP Version8.0.0-8.0.4

Activities

derick

2020-12-10 12:22

administrator   ~0005576

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.

Issue History

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