diff --git a/ext/zend_test/fiber.c b/ext/zend_test/fiber.c index fa285aa2d6b..199d1b28b8c 100644 --- a/ext/zend_test/fiber.c +++ b/ext/zend_test/fiber.c @@ -91,6 +91,7 @@ static ZEND_STACK_ALIGNED void zend_test_fiber_execute(zend_fiber_transfer *tran execute_data = (zend_execute_data *) stack->top; memset(execute_data, 0, sizeof(zend_execute_data)); + execute_data->func = (zend_function *) &zend_pass_function; EG(current_execute_data) = execute_data; EG(jit_trace_num) = 0; diff --git a/ext/zend_test/tests/gh16230.phpt b/ext/zend_test/tests/gh16230.phpt new file mode 100644 index 00000000000..42487df5b94 --- /dev/null +++ b/ext/zend_test/tests/gh16230.phpt @@ -0,0 +1,22 @@ +--TEST-- +GH-16230: Segfault on debug_backtrace() inside _ZendTestFiber +--EXTENSIONS-- +zend_test +--FILE-- +start(); +?> +--EXPECT-- +array(1) { + [0]=> + array(2) { + ["function"]=> + string(9) "{closure}" + ["args"]=> + array(0) { + } + } +}