@@ -446,9 +446,10 @@ tstate_set_stack(PyThreadState *tstate,
446
446
assert (stack_size > 0 );
447
447
assert (stack_size >= (_PyOS_STACK_MARGIN_BYTES * 3 ));
448
448
449
+ uintptr_t start = (uintptr_t )stack_start_addr ;
449
450
_PyThreadStateImpl * ts = (_PyThreadStateImpl * )tstate ;
450
- ts -> c_stack_hard_limit = ( uintptr_t ) stack_start_addr ;
451
- ts -> c_stack_top = ( uintptr_t ) stack_start_addr + stack_size ;
451
+ ts -> c_stack_hard_limit = start + _PyOS_STACK_MARGIN_BYTES ;
452
+ ts -> c_stack_top = start + stack_size ;
452
453
453
454
uintptr_t soft_limit = ts -> c_stack_hard_limit ;
454
455
#ifdef _Py_THREAD_SANITIZER
@@ -498,7 +499,7 @@ PyUnstable_ThreadState_ResetStack(PyThreadState *tstate)
498
499
ULONG guarantee = 0 ;
499
500
SetThreadStackGuarantee (& guarantee );
500
501
501
- uintptr_t start = (uintptr_t )low + guarantee + _PyOS_STACK_MARGIN_BYTES ;
502
+ uintptr_t start = (uintptr_t )low + guarantee ;
502
503
size_t size = (uintptr_t )high - start ;
503
504
tstate_set_stack (tstate , (void * )start , size );
504
505
@@ -525,7 +526,7 @@ PyUnstable_ThreadState_ResetStack(PyThreadState *tstate)
525
526
}
526
527
if (err == 0 ) {
527
528
uintptr_t base = ((uintptr_t )stack_addr ) + guard_size ;
528
- uintptr_t start = base + _PyOS_STACK_MARGIN_BYTES ;
529
+ uintptr_t start = base ;
529
530
size_t pystack_size = (base + stack_size ) - start ;
530
531
tstate_set_stack (tstate , (void * )start , pystack_size );
531
532
}
@@ -534,7 +535,7 @@ PyUnstable_ThreadState_ResetStack(PyThreadState *tstate)
534
535
{
535
536
uintptr_t here_addr = _Py_get_machine_stack_pointer ();
536
537
uintptr_t top = _Py_SIZE_ROUND_UP (here_addr , 4096 );
537
- uintptr_t start = top - ( Py_C_STACK_SIZE + _PyOS_STACK_MARGIN_BYTES ) ;
538
+ uintptr_t start = top - Py_C_STACK_SIZE ;
538
539
size_t pystack_size = top - start ;
539
540
tstate_set_stack (tstate , (void * )start , pystack_size );
540
541
}
0 commit comments