mirror of
https://github.com/php/php-src.git
synced 2026-03-24 08:12:21 +01:00
Increase the reserved stack size in ASAN builds, as instrumentation use more stack. Increase the max allowed stack size in some tests, and enable these tests under ASAN. Use __builtin_frame_address(0), instead of some stack variable, when we need a stack address, as ASAN may store local variables outside of the real stack.
55 lines
1002 B
PHP
55 lines
1002 B
PHP
--TEST--
|
|
Stack limit 004 - Stack limit checks with fixed max_allowed_stack_size (fibers)
|
|
--SKIPIF--
|
|
<?php
|
|
if (!function_exists('zend_test_zend_call_stack_get')) die("skip zend_test_zend_call_stack_get() is not available");
|
|
?>
|
|
--EXTENSIONS--
|
|
zend_test
|
|
--FILE--
|
|
<?php
|
|
|
|
var_dump(zend_test_zend_call_stack_get());
|
|
|
|
class Test1 {
|
|
public function __destruct() {
|
|
new Test1;
|
|
}
|
|
}
|
|
|
|
$callback = function (): int {
|
|
try {
|
|
new Test1;
|
|
} catch (Error $e) {
|
|
return count($e->getTrace());
|
|
}
|
|
|
|
throw new \Exception();
|
|
};
|
|
|
|
ini_set('fiber.stack_size', '1M');
|
|
$fiber = new Fiber($callback);
|
|
$fiber->start();
|
|
$depth1 = $fiber->getReturn();
|
|
|
|
ini_set('fiber.stack_size', '512K');
|
|
$fiber = new Fiber($callback);
|
|
$fiber->start();
|
|
$depth2 = $fiber->getReturn();
|
|
|
|
var_dump($depth1 > $depth2);
|
|
|
|
?>
|
|
--EXPECTF--
|
|
array(4) {
|
|
["base"]=>
|
|
string(%d) "0x%x"
|
|
["max_size"]=>
|
|
string(%d) "0x%x"
|
|
["position"]=>
|
|
string(%d) "0x%x"
|
|
["EG(stack_limit)"]=>
|
|
string(%d) "0x%x"
|
|
}
|
|
bool(true)
|