File tree 2 files changed +15
-1
lines changed
2 files changed +15
-1
lines changed Original file line number Diff line number Diff line change @@ -15,7 +15,10 @@ $stack = zend_test_zend_call_stack_get();
15
15
var_dump ($ stack );
16
16
17
17
$ expectedMaxSize = match (php_uname ('s ' )) {
18
- 'Darwin ' => 8 *1024 *1024 ,
18
+ 'Darwin ' => match (php_uname ('m ' )) {
19
+ 'x86_64 ' => 8 *1024 *1024 ,
20
+ 'arm64 ' => 8372224 ,
21
+ },
19
22
'FreeBSD ' => match (php_uname ('m ' )) {
20
23
'amd64 ' => 512 *1024 *1024 - 4096 ,
21
24
'i386 ' => 64 *1024 *1024 - 4096 ,
Original file line number Diff line number Diff line change @@ -427,6 +427,16 @@ static bool zend_call_stack_get_macos(zend_call_stack *stack)
427
427
void * base = pthread_get_stackaddr_np (pthread_self ());
428
428
size_t max_size ;
429
429
430
+ // TODO it seems it is just a bug of pthread_get_stacksize_np on earlier
431
+ // macOs releases which had been fixed since, we might able to drop
432
+ // the hardcoded part altogether for PHP 9 ?
433
+ #if defined(__aarch64__ )
434
+ /*
435
+ * 8 mb for the main thread triggers a stack overflow.
436
+ * instead we derive it from pthread_get_stacksize_np.
437
+ */
438
+ max_size = pthread_get_stacksize_np (pthread_self ());
439
+ #else
430
440
if (pthread_main_np ()) {
431
441
/* pthread_get_stacksize_np() returns a too low value for the main
432
442
* thread in OSX 10.9, 10.10:
@@ -440,6 +450,7 @@ static bool zend_call_stack_get_macos(zend_call_stack *stack)
440
450
} else {
441
451
max_size = pthread_get_stacksize_np (pthread_self ());
442
452
}
453
+ #endif
443
454
444
455
stack -> base = base ;
445
456
stack -> max_size = max_size ;
You can’t perform that action at this time.
0 commit comments