GeezerVison is showing github.com — Unrecoverable stack overflow with infinite recursion on macOS · Issue #131543 · python/cpython
Unrecoverable stack overflow with infinite recursion on macOS #131543DescriptionCrash report
What happened?
Hello,
In the CI of cloudpickle, we encountered a crash of the python interpreter due to a stack overflow with python3.14.0a6.
Reverting to python3.14.0a5 fixes the error.
This might be related to GH-130398, with a bad detection of the limit of the stack?
I could not test it locally as I don't own a mac.
class A:
def __getattribute__(self, name):
return getattr(self, name)
a = A()
print("Testing Recursion Limit")
try:
a.test
except RecursionError:
print("Recursion Limit ok")
Output with python3.14.0a5:
Testing Recursion Limit
Recursion Limit ok
Output with python3.14.0a6:
Fatal Python error: _Py_CheckRecursiveCall: Unrecoverable stack overflow (used 3923 kB)
Python runtime state: initialized
Current thread 0x00000001f839cf80 (most recent call first):
File "/Users/runner/work/cloudpickle/cloudpickle/test_recursion_error.py", line 3 in __getattribute__
File "/Users/runner/work/cloudpickle/cloudpickle/test_recursion_error.py", line 3 in __getattribute__
File "/Users/runner/work/cloudpickle/cloudpickle/test_recursion_error.py", line 3 in __getattribute__
....
CPython versions tested on:
3.14
Operating systems tested on:
macOS
Output from running 'python -VV' on the command line:
No response ActivityStanFromIreland commented on Mar 21, 2025 Unable to reproduce with python3.14.0a6 on Linux. encukou commented on Mar 21, 2025 Hi,
Are the logs from that cloudpickle CI run public? tomMoral commented on Mar 21, 2025 ContributorAuthor More actions I was unable to reproduce locally with linux either.
The outputs for both runs with cloudpickle CI are linked in the issue description (sorry it is not super explicit indeed) changed the title [-]Unrecoverable stack overflow with infinite recursion on OSX[/-] [+]Unrecoverable stack overflow with infinite recursion on macOS[/+] on Mar 21, 2025ned-deily commented on Mar 22, 2025 I can reproduce the crash using any of the python.org macOS Python 3.14 alphas, as well as the latest python.org and MacPorts-supplied Python 3.13(.2) and 3.12(.9) - I didn't try any earlier versions of them. It might be an issue with release vs debug builds and there certainly have been many instances in the past of different stack limits on different platforms, especially on macOS.
tomMoral commented on Mar 22, 2025 ContributorAuthor More actions ned-deily commented on Mar 22, 2025 My apologies! I somehow totally misread your report. Contrary to what I originally wrote, I cannot reproduce the failure with any of those python.org macOS installers, including 3.14.0a5 and a6. I see that the actions/python-versions repo claims to repackage the python.org installers for macOS but I have no insight into how they might do that or what differences Github CI runners might present that might be a factor here. All I can say is that we have our own Github CI jobs for both Intel and Apple Silicon (ARM). And our python.org release installers are tested on a variety of real machines and VMs of both architectures with various macOS versions but not on a Github runner itself. ronaldoussoren commented on Mar 23, 2025 FWIW: The reproducer in the initial message crashes for me with Python 3.14a6, but only for arm64 and not x86_64 (e.g. fatal error with arch -arm64 python3.14 repro.py and no issue with arch -x86_64 python3.14 repro.py). This is with the python.org installer. rokm commented on May 25, 2025 I can reproduce the issue on my M3 Mac running macOS 15.5 with the script from OP and with python.org installer for 3.14.0b1.
Contrary to the comment above this one, the crash happens for me with both native arm64 mode and in x86_64 mode.
Interestingly, though, the crash does not happen with free-threaded version of 3.14.0b1 from python.org installer, nor if I manually compile 3.14.0b1 from source (but I haven't really tried to fully match the build flags, so that might be expected).
As far as I can tell, the problem is that pthread_getattr_np is not available on macOS, so the stack size is set to hard-coded value of 4 MB:
|
_tstate->c_stack_top = _Py_SIZE_ROUND_UP(here_addr, 4096); |
|
_tstate->c_stack_soft_limit = _tstate->c_stack_top - Py_C_STACK_SIZE; |
|
_tstate->c_stack_hard_limit = _tstate->c_stack_top - (Py_C_STACK_SIZE + PYOS_STACK_MARGIN_BYTES); |
|
#if defined(__s390x__) |
|
# define Py_C_STACK_SIZE 320000 |
|
#elif defined(_WIN32) |
|
// Don't define Py_C_STACK_SIZE, ask the O/S |
|
#elif defined(__ANDROID__) |
|
# define Py_C_STACK_SIZE 1200000 |
|
#elif defined(__sparc__) |
|
# define Py_C_STACK_SIZE 1600000 |
|
#elif defined(__hppa__) || defined(__powerpc64__) |
|
# define Py_C_STACK_SIZE 2000000 |
|
#else |
|
# define Py_C_STACK_SIZE 4000000 |
|
#endif |
This is too conservative for macOS, where the python's build script explicitly increases the stack to 16 MB:
|
Darwin/*|iOS/*) |
|
LINKFORSHARED="$extra_undefs -framework CoreFoundation" |
|
|
|
# Issue #18075: the default maximum stack size (8MBytes) is too |
|
# small for the default recursion limit. Increase the stack size |
|
# to ensure that tests don't crash |
|
stack_size="1000000" # 16 MB |
|
if test "$with_ubsan" = "yes" |
|
then |
|
# Undefined behavior sanitizer requires an even deeper stack |
|
stack_size="4000000" # 64 MB |
|
fi |
|
|
|
AC_DEFINE_UNQUOTED([THREAD_STACK_SIZE], |
|
[0x$stack_size], |
|
[Custom thread stack size depending on chosen sanitizer runtimes.]) |
|
|
|
if test $ac_sys_system = "Darwin"; then |
|
LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED" |
|
|
|
if test "$enable_framework"; then |
|
LINKFORSHARED="$LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK)' |
|
fi |
|
LINKFORSHARED="$LINKFORSHARED" |
|
elif test $ac_sys_system = "iOS"; then |
|
LINKFORSHARED="-Wl,-stack_size,$stack_size $LINKFORSHARED "'$(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK)' |
|
fi |
|
;; |
So the hard-coded stack size (Py_C_STACK_SIZE) should be raised for macOS, or even better, the actual stack size should be obtained using the macOS-specific pthread_get_stackaddr_np() and pthread_get_stacksize_np() functions.
Some additional debugging info...
For testing, I've extended the OP test script with recursion level counter and a manual stack pointer tracking:
import ctypes
import ctypes.util
# Obtain stack address and stack size as reported by non-portable pthread functions:
libc = ctypes.CDLL(ctypes.util.find_library('c'))
libc.pthread_self.restype = ctypes.c_void_p
libc.pthread_get_stackaddr_np.argtypes = [ctypes.c_void_p]
libc.pthread_get_stackaddr_np.restype = ctypes.c_void_p
libc.pthread_get_stacksize_np.argtypes = [ctypes.c_void_p]
libc.pthread_get_stacksize_np.restype = ctypes.c_ulonglong
this_thread = libc.pthread_self()
stack_address = libc.pthread_get_stackaddr_np(this_thread)
stack_size = libc.pthread_get_stacksize_np(this_thread)
print(f"Stack address: {stack_address} = 0x{stack_address:X}")
print(f"Stack size: {stack_size} = {stack_size / 1024.0} kB = {stack_size / 1024**2} MB")
# Helper for tracking stack pointer location
splib = ctypes.CDLL('./stackpointer.dylib')
splib.get_machine_stack_pointer.restype = ctypes.c_void_p
stack_pointer = splib.get_machine_stack_pointer()
print(f"Stack pointer: 0x{stack_pointer:X}, depth: {(stack_address - stack_pointer)/1024:.2f} kB")
# Recursion limit test
counter = 0
class A:
def __getattribute__(self, name):
global counter
counter += 1
stack_pointer = splib.get_machine_stack_pointer()
print(f"Recursion level: {counter}, stack pointer: 0x{stack_pointer:X}, depth: {(stack_address - stack_pointer)/1024:.2f} kB")
return getattr(self, name)
a = A()
print("Testing Recursion Limit")
try:
a.test
except RecursionError:
print(f"Recursion Limit ok (reached level {counter})")
with the corresponding utility shared library to track the stack pointer:
// stackpointer.c
//
// gcc -shared -fpic -o stackpointer.dylib stackpointer.c
//
// import ctypes
// sp = ctypes.CDLL('./stackpointer.dylib')
// address = sp.get_machine_stack_pointer()
#include <stdint.h>
uintptr_t get_machine_stack_pointer(void)
{
return (uintptr_t)__builtin_frame_address(0);
}
Running with python.org build of 3.14.0b1:
Output
% python3.14 repro.py
Stack address: 6163398656 = 0x16F5E0000
Stack size: 16777216 = 16384.0 kB = 16.0 MB
Stack pointer: 0x16F5D7B20, depth: 33.22 kB
Testing Recursion Limit
Recursion level: 1, stack pointer: 0x16F5D0D60, depth: 60.66 kB
Recursion level: 2, stack pointer: 0x16F5C9F70, depth: 88.14 kB
Recursion level: 3, stack pointer: 0x16F5C3180, depth: 115.62 kB
Recursion level: 4, stack pointer: 0x16F5BC390, depth: 143.11 kB
Recursion level: 5, stack pointer: 0x16F5B55A0, depth: 170.59 kB
Recursion level: 6, stack pointer: 0x16F5AE7B0, depth: 198.08 kB
Recursion level: 7, stack pointer: 0x16F5A79C0, depth: 225.56 kB
Recursion level: 8, stack pointer: 0x16F5A0BD0, depth: 253.05 kB
Recursion level: 9, stack pointer: 0x16F599DE0, depth: 280.53 kB
Recursion level: 10, stack pointer: 0x16F592FF0, depth: 308.02 kB
Recursion level: 11, stack pointer: 0x16F58C200, depth: 335.50 kB
Recursion level: 12, stack pointer: 0x16F585410, depth: 362.98 kB
Recursion level: 13, stack pointer: 0x16F57E620, depth: 390.47 kB
Recursion level: 14, stack pointer: 0x16F577830, depth: 417.95 kB
Recursion level: 15, stack pointer: 0x16F570A40, depth: 445.44 kB
Recursion level: 16, stack pointer: 0x16F569C50, depth: 472.92 kB
Recursion level: 17, stack pointer: 0x16F562E60, depth: 500.41 kB
Recursion level: 18, stack pointer: 0x16F55C070, depth: 527.89 kB
Recursion level: 19, stack pointer: 0x16F555280, depth: 555.38 kB
Recursion level: 20, stack pointer: 0x16F54E490, depth: 582.86 kB
Recursion level: 21, stack pointer: 0x16F5476A0, depth: 610.34 kB
Recursion level: 22, stack pointer: 0x16F5408B0, depth: 637.83 kB
Recursion level: 23, stack pointer: 0x16F539AC0, depth: 665.31 kB
Recursion level: 24, stack pointer: 0x16F532CD0, depth: 692.80 kB
Recursion level: 25, stack pointer: 0x16F52BEE0, depth: 720.28 kB
Recursion level: 26, stack pointer: 0x16F5250F0, depth: 747.77 kB
Recursion level: 27, stack pointer: 0x16F51E300, depth: 775.25 kB
Recursion level: 28, stack pointer: 0x16F517510, depth: 802.73 kB
Recursion level: 29, stack pointer: 0x16F510720, depth: 830.22 kB
Recursion level: 30, stack pointer: 0x16F509930, depth: 857.70 kB
Recursion level: 31, stack pointer: 0x16F502B40, depth: 885.19 kB
Recursion level: 32, stack pointer: 0x16F4FBD50, depth: 912.67 kB
Recursion level: 33, stack pointer: 0x16F4F4F60, depth: 940.16 kB
Recursion level: 34, stack pointer: 0x16F4EE170, depth: 967.64 kB
Recursion level: 35, stack pointer: 0x16F4E7380, depth: 995.12 kB
Recursion level: 36, stack pointer: 0x16F4E0590, depth: 1022.61 kB
Recursion level: 37, stack pointer: 0x16F4D97A0, depth: 1050.09 kB
Recursion level: 38, stack pointer: 0x16F4D29B0, depth: 1077.58 kB
Recursion level: 39, stack pointer: 0x16F4CBBC0, depth: 1105.06 kB
Recursion level: 40, stack pointer: 0x16F4C4DD0, depth: 1132.55 kB
Recursion level: 41, stack pointer: 0x16F4BDFE0, depth: 1160.03 kB
Recursion level: 42, stack pointer: 0x16F4B71F0, depth: 1187.52 kB
Recursion level: 43, stack pointer: 0x16F4B0400, depth: 1215.00 kB
Recursion level: 44, stack pointer: 0x16F4A9610, depth: 1242.48 kB
Recursion level: 45, stack pointer: 0x16F4A2820, depth: 1269.97 kB
Recursion level: 46, stack pointer: 0x16F49BA30, depth: 1297.45 kB
Recursion level: 47, stack pointer: 0x16F494C40, depth: 1324.94 kB
Recursion level: 48, stack pointer: 0x16F48DE50, depth: 1352.42 kB
Recursion level: 49, stack pointer: 0x16F487060, depth: 1379.91 kB
Recursion level: 50, stack pointer: 0x16F480270, depth: 1407.39 kB
Recursion level: 51, stack pointer: 0x16F479480, depth: 1434.88 kB
Recursion level: 52, stack pointer: 0x16F472690, depth: 1462.36 kB
Recursion level: 53, stack pointer: 0x16F46B8A0, depth: 1489.84 kB
Recursion level: 54, stack pointer: 0x16F464AB0, depth: 1517.33 kB
Recursion level: 55, stack pointer: 0x16F45DCC0, depth: 1544.81 kB
Recursion level: 56, stack pointer: 0x16F456ED0, depth: 1572.30 kB
Recursion level: 57, stack pointer: 0x16F4500E0, depth: 1599.78 kB
Recursion level: 58, stack pointer: 0x16F4492F0, depth: 1627.27 kB
Recursion level: 59, stack pointer: 0x16F442500, depth: 1654.75 kB
Recursion level: 60, stack pointer: 0x16F43B710, depth: 1682.23 kB
Recursion level: 61, stack pointer: 0x16F434920, depth: 1709.72 kB
Recursion level: 62, stack pointer: 0x16F42DB30, depth: 1737.20 kB
Recursion level: 63, stack pointer: 0x16F426D40, depth: 1764.69 kB
Recursion level: 64, stack pointer: 0x16F41FF50, depth: 1792.17 kB
Recursion level: 65, stack pointer: 0x16F419160, depth: 1819.66 kB
Recursion level: 66, stack pointer: 0x16F412370, depth: 1847.14 kB
Recursion level: 67, stack pointer: 0x16F40B580, depth: 1874.62 kB
Recursion level: 68, stack pointer: 0x16F404790, depth: 1902.11 kB
Recursion level: 69, stack pointer: 0x16F3FD9A0, depth: 1929.59 kB
Recursion level: 70, stack pointer: 0x16F3F6BB0, depth: 1957.08 kB
Recursion level: 71, stack pointer: 0x16F3EFDC0, depth: 1984.56 kB
Recursion level: 72, stack pointer: 0x16F3E8FD0, depth: 2012.05 kB
Recursion level: 73, stack pointer: 0x16F3E21E0, depth: 2039.53 kB
Recursion level: 74, stack pointer: 0x16F3DB3F0, depth: 2067.02 kB
Recursion level: 75, stack pointer: 0x16F3D4600, depth: 2094.50 kB
Recursion level: 76, stack pointer: 0x16F3CD810, depth: 2121.98 kB
Recursion level: 77, stack pointer: 0x16F3C6A20, depth: 2149.47 kB
Recursion level: 78, stack pointer: 0x16F3BFC30, depth: 2176.95 kB
Recursion level: 79, stack pointer: 0x16F3B8E40, depth: 2204.44 kB
Recursion level: 80, stack pointer: 0x16F3B2050, depth: 2231.92 kB
Recursion level: 81, stack pointer: 0x16F3AB260, depth: 2259.41 kB
Recursion level: 82, stack pointer: 0x16F3A4470, depth: 2286.89 kB
Recursion level: 83, stack pointer: 0x16F39D680, depth: 2314.38 kB
Recursion level: 84, stack pointer: 0x16F396890, depth: 2341.86 kB
Recursion level: 85, stack pointer: 0x16F38FAA0, depth: 2369.34 kB
Recursion level: 86, stack pointer: 0x16F388CB0, depth: 2396.83 kB
Recursion level: 87, stack pointer: 0x16F381EC0, depth: 2424.31 kB
Recursion level: 88, stack pointer: 0x16F37B0D0, depth: 2451.80 kB
Recursion level: 89, stack pointer: 0x16F3742E0, depth: 2479.28 kB
Recursion level: 90, stack pointer: 0x16F36D4F0, depth: 2506.77 kB
Recursion level: 91, stack pointer: 0x16F366700, depth: 2534.25 kB
Recursion level: 92, stack pointer: 0x16F35F910, depth: 2561.73 kB
Recursion level: 93, stack pointer: 0x16F358B20, depth: 2589.22 kB
Recursion level: 94, stack pointer: 0x16F351D30, depth: 2616.70 kB
Recursion level: 95, stack pointer: 0x16F34AF40, depth: 2644.19 kB
Recursion level: 96, stack pointer: 0x16F344150, depth: 2671.67 kB
Recursion level: 97, stack pointer: 0x16F33D360, depth: 2699.16 kB
Recursion level: 98, stack pointer: 0x16F336570, depth: 2726.64 kB
Recursion level: 99, stack pointer: 0x16F32F780, depth: 2754.12 kB
Recursion level: 100, stack pointer: 0x16F328990, depth: 2781.61 kB
Recursion level: 101, stack pointer: 0x16F321BA0, depth: 2809.09 kB
Recursion level: 102, stack pointer: 0x16F31ADB0, depth: 2836.58 kB
Recursion level: 103, stack pointer: 0x16F313FC0, depth: 2864.06 kB
Recursion level: 104, stack pointer: 0x16F30D1D0, depth: 2891.55 kB
Recursion level: 105, stack pointer: 0x16F3063E0, depth: 2919.03 kB
Recursion level: 106, stack pointer: 0x16F2FF5F0, depth: 2946.52 kB
Recursion level: 107, stack pointer: 0x16F2F8800, depth: 2974.00 kB
Recursion level: 108, stack pointer: 0x16F2F1A10, depth: 3001.48 kB
Recursion level: 109, stack pointer: 0x16F2EAC20, depth: 3028.97 kB
Recursion level: 110, stack pointer: 0x16F2E3E30, depth: 3056.45 kB
Recursion level: 111, stack pointer: 0x16F2DD040, depth: 3083.94 kB
Recursion level: 112, stack pointer: 0x16F2D6250, depth: 3111.42 kB
Recursion level: 113, stack pointer: 0x16F2CF460, depth: 3138.91 kB
Recursion level: 114, stack pointer: 0x16F2C8670, depth: 3166.39 kB
Recursion level: 115, stack pointer: 0x16F2C1880, depth: 3193.88 kB
Recursion level: 116, stack pointer: 0x16F2BAA90, depth: 3221.36 kB
Recursion level: 117, stack pointer: 0x16F2B3CA0, depth: 3248.84 kB
Recursion level: 118, stack pointer: 0x16F2ACEB0, depth: 3276.33 kB
Recursion level: 119, stack pointer: 0x16F2A60C0, depth: 3303.81 kB
Recursion level: 120, stack pointer: 0x16F29F2D0, depth: 3331.30 kB
Recursion level: 121, stack pointer: 0x16F2984E0, depth: 3358.78 kB
Recursion level: 122, stack pointer: 0x16F2916F0, depth: 3386.27 kB
Recursion level: 123, stack pointer: 0x16F28A900, depth: 3413.75 kB
Recursion level: 124, stack pointer: 0x16F283B10, depth: 3441.23 kB
Recursion level: 125, stack pointer: 0x16F27CD20, depth: 3468.72 kB
Recursion level: 126, stack pointer: 0x16F275F30, depth: 3496.20 kB
Recursion level: 127, stack pointer: 0x16F26F140, depth: 3523.69 kB
Recursion level: 128, stack pointer: 0x16F268350, depth: 3551.17 kB
Recursion level: 129, stack pointer: 0x16F261560, depth: 3578.66 kB
Recursion level: 130, stack pointer: 0x16F25A770, depth: 3606.14 kB
Recursion level: 131, stack pointer: 0x16F253980, depth: 3633.62 kB
Recursion level: 132, stack pointer: 0x16F24CB90, depth: 3661.11 kB
Recursion level: 133, stack pointer: 0x16F245DA0, depth: 3688.59 kB
Recursion level: 134, stack pointer: 0x16F23EFB0, depth: 3716.08 kB
Recursion level: 135, stack pointer: 0x16F2381C0, depth: 3743.56 kB
Recursion level: 136, stack pointer: 0x16F2313D0, depth: 3771.05 kB
Recursion level: 137, stack pointer: 0x16F22A5E0, depth: 3798.53 kB
Recursion level: 138, stack pointer: 0x16F2237F0, depth: 3826.02 kB
Recursion level: 139, stack pointer: 0x16F21CA00, depth: 3853.50 kB
Recursion level: 140, stack pointer: 0x16F215C10, depth: 3880.98 kB
Recursion level: 141, stack pointer: 0x16F20EE20, depth: 3908.47 kB
Fatal Python error: _Py_CheckRecursiveCall: Unrecoverable stack overflow (used 3931 kB) while calling a Python object
Python runtime state: initialized
Current thread 0x00000001f3181f00 (most recent call first):
File "/Users/rok/Development/pyi-python314/repro.py", line 37 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
File "/Users/rok/Development/pyi-python314/repro.py", line 38 in __getattribute__
zsh: abort python3.14 repro.py
The register dump in macOS crash report shows that sp register was 6159368000 (0x16f207f40); compared to
stack pointer address reported by pthread_get_stackaddr_np, this means 4030656 bytes or 3936 kB in depth, which corroborates the Python's own error message:
Unrecoverable stack overflow (used 3931 kB) while calling a Python object
So the stack address is likely correctly initialized and stack pointer is correctly tracked, but the hard-coded limit of 4 MB is wrong; as indicated by output of pthread_get_stacksize_np, the actual stack size is 16 MB.
And for the sake of completeness - why do free-threaded version and custom build seem to pass the test without issues? Looks like the stack cost of each recursion level is (significantly) lower - presumably due to differences in build flags?
Running with free-threaded python.org build of 3.14.0b1:
Output
% python3.14t repro.py
Stack address: 6162677760 = 0x16F530000
Stack size: 16777216 = 16384.0 kB = 16.0 MB
Stack pointer: 0x16F52DDA0, depth: 8.59 kB
Testing Recursion Limit
Recursion level: 1, stack pointer: 0x16F52D1A0, depth: 11.59 kB
Recursion level: 2, stack pointer: 0x16F52C530, depth: 14.70 kB
Recursion level: 3, stack pointer: 0x16F52B8C0, depth: 17.81 kB
Recursion level: 4, stack pointer: 0x16F52AC50, depth: 20.92 kB
Recursion level: 5, stack pointer: 0x16F529FE0, depth: 24.03 kB
Recursion level: 6, stack pointer: 0x16F529370, depth: 27.14 kB
Recursion level: 7, stack pointer: 0x16F528700, depth: 30.25 kB
Recursion level: 8, stack pointer: 0x16F527A90, depth: 33.36 kB
Recursion level: 9, stack pointer: 0x16F526E20, depth: 36.47 kB
Recursion level: 10, stack pointer: 0x16F5261B0, depth: 39.58 kB
Recursion level: 11, stack pointer: 0x16F525540, depth: 42.69 kB
Recursion level: 12, stack pointer: 0x16F5248D0, depth: 45.80 kB
Recursion level: 13, stack pointer: 0x16F523C60, depth: 48.91 kB
Recursion level: 14, stack pointer: 0x16F522FF0, depth: 52.02 kB
Recursion level: 15, stack pointer: 0x16F522380, depth: 55.12 kB
Recursion level: 16, stack pointer: 0x16F521710, depth: 58.23 kB
Recursion level: 17, stack pointer: 0x16F520AA0, depth: 61.34 kB
Recursion level: 18, stack pointer: 0x16F51FE30, depth: 64.45 kB
Recursion level: 19, stack pointer: 0x16F51F1C0, depth: 67.56 kB
Recursion level: 20, stack pointer: 0x16F51E550, depth: 70.67 kB
Recursion level: 21, stack pointer: 0x16F51D8E0, depth: 73.78 kB
Recursion level: 22, stack pointer: 0x16F51CC70, depth: 76.89 kB
Recursion level: 23, stack pointer: 0x16F51C000, depth: 80.00 kB
Recursion level: 24, stack pointer: 0x16F51B390, depth: 83.11 kB
Recursion level: 25, stack pointer: 0x16F51A720, depth: 86.22 kB
Recursion level: 26, stack pointer: 0x16F519AB0, depth: 89.33 kB
Recursion level: 27, stack pointer: 0x16F518E40, depth: 92.44 kB
Recursion level: 28, stack pointer: 0x16F5181D0, depth: 95.55 kB
Recursion level: 29, stack pointer: 0x16F517560, depth: 98.66 kB
Recursion level: 30, stack pointer: 0x16F5168F0, depth: 101.77 kB
Recursion level: 31, stack pointer: 0x16F515C80, depth: 104.88 kB
Recursion level: 32, stack pointer: 0x16F515010, depth: 107.98 kB
Recursion level: 33, stack pointer: 0x16F5143A0, depth: 111.09 kB
Recursion level: 34, stack pointer: 0x16F513730, depth: 114.20 kB
Recursion level: 35, stack pointer: 0x16F512AC0, depth: 117.31 kB
Recursion level: 36, stack pointer: 0x16F511E50, depth: 120.42 kB
Recursion level: 37, stack pointer: 0x16F5111E0, depth: 123.53 kB
Recursion level: 38, stack pointer: 0x16F510570, depth: 126.64 kB
Recursion level: 39, stack pointer: 0x16F50F900, depth: 129.75 kB
Recursion level: 40, stack pointer: 0x16F50EC90, depth: 132.86 kB
Recursion level: 41, stack pointer: 0x16F50E020, depth: 135.97 kB
Recursion level: 42, stack pointer: 0x16F50D3B0, depth: 139.08 kB
Recursion level: 43, stack pointer: 0x16F50C740, depth: 142.19 kB
Recursion level: 44, stack pointer: 0x16F50BAD0, depth: 145.30 kB
Recursion level: 45, stack pointer: 0x16F50AE60, depth: 148.41 kB
Recursion level: 46, stack pointer: 0x16F50A1F0, depth: 151.52 kB
Recursion level: 47, stack pointer: 0x16F509580, depth: 154.62 kB
Recursion level: 48, stack pointer: 0x16F508910, depth: 157.73 kB
Recursion level: 49, stack pointer: 0x16F507CA0, depth: 160.84 kB
Recursion level: 50, stack pointer: 0x16F507030, depth: 163.95 kB
Recursion level: 51, stack pointer: 0x16F5063C0, depth: 167.06 kB
Recursion level: 52, stack pointer: 0x16F505750, depth: 170.17 kB
Recursion level: 53, stack pointer: 0x16F504AE0, depth: 173.28 kB
Recursion level: 54, stack pointer: 0x16F503E70, depth: 176.39 kB
Recursion level: 55, stack pointer: 0x16F503200, depth: 179.50 kB
Recursion level: 56, stack pointer: 0x16F502590, depth: 182.61 kB
Recursion level: 57, stack pointer: 0x16F501920, depth: 185.72 kB
Recursion level: 58, stack pointer: 0x16F500CB0, depth: 188.83 kB
Recursion level: 59, stack pointer: 0x16F500040, depth: 191.94 kB
Recursion level: 60, stack pointer: 0x16F4FF3D0, depth: 195.05 kB
Recursion level: 61, stack pointer: 0x16F4FE760, depth: 198.16 kB
Recursion level: 62, stack pointer: 0x16F4FDAF0, depth: 201.27 kB
Recursion level: 63, stack pointer: 0x16F4FCE80, depth: 204.38 kB
Recursion level: 64, stack pointer: 0x16F4FC210, depth: 207.48 kB
Recursion level: 65, stack pointer: 0x16F4FB5A0, depth: 210.59 kB
Recursion level: 66, stack pointer: 0x16F4FA930, depth: 213.70 kB
Recursion level: 67, stack pointer: 0x16F4F9CC0, depth: 216.81 kB
Recursion level: 68, stack pointer: 0x16F4F9050, depth: 219.92 kB
Recursion level: 69, stack pointer: 0x16F4F83E0, depth: 223.03 kB
Recursion level: 70, stack pointer: 0x16F4F7770, depth: 226.14 kB
Recursion level: 71, stack pointer: 0x16F4F6B00, depth: 229.25 kB
Recursion level: 72, stack pointer: 0x16F4F5E90, depth: 232.36 kB
Recursion level: 73, stack pointer: 0x16F4F5220, depth: 235.47 kB
Recursion level: 74, stack pointer: 0x16F4F45B0, depth: 238.58 kB
Recursion level: 75, stack pointer: 0x16F4F3940, depth: 241.69 kB
Recursion level: 76, stack pointer: 0x16F4F2CD0, depth: 244.80 kB
Recursion level: 77, stack pointer: 0x16F4F2060, depth: 247.91 kB
Recursion level: 78, stack pointer: 0x16F4F13F0, depth: 251.02 kB
Recursion level: 79, stack pointer: 0x16F4F0780, depth: 254.12 kB
Recursion level: 80, stack pointer: 0x16F4EFB10, depth: 257.23 kB
Recursion level: 81, stack pointer: 0x16F4EEEA0, depth: 260.34 kB
Recursion level: 82, stack pointer: 0x16F4EE230, depth: 263.45 kB
Recursion level: 83, stack pointer: 0x16F4ED5C0, depth: 266.56 kB
Recursion level: 84, stack pointer: 0x16F4EC950, depth: 269.67 kB
Recursion level: 85, stack pointer: 0x16F4EBCE0, depth: 272.78 kB
Recursion level: 86, stack pointer: 0x16F4EB070, depth: 275.89 kB
Recursion level: 87, stack pointer: 0x16F4EA400, depth: 279.00 kB
Recursion level: 88, stack pointer: 0x16F4E9790, depth: 282.11 kB
Recursion level: 89, stack pointer: 0x16F4E8B20, depth: 285.22 kB
Recursion level: 90, stack pointer: 0x16F4E7EB0, depth: 288.33 kB
Recursion level: 91, stack pointer: 0x16F4E7240, depth: 291.44 kB
Recursion level: 92, stack pointer: 0x16F4E65D0, depth: 294.55 kB
Recursion level: 93, stack pointer: 0x16F4E5960, depth: 297.66 kB
Recursion level: 94, stack pointer: 0x16F4E4CF0, depth: 300.77 kB
Recursion level: 95, stack pointer: 0x16F4E4080, depth: 303.88 kB
Recursion level: 96, stack pointer: 0x16F4E3410, depth: 306.98 kB
Recursion level: 97, stack pointer: 0x16F4E27A0, depth: 310.09 kB
Recursion level: 98, stack pointer: 0x16F4E1B30, depth: 313.20 kB
Recursion level: 99, stack pointer: 0x16F4E0EC0, depth: 316.31 kB
Recursion level: 100, stack pointer: 0x16F4E0250, depth: 319.42 kB
Recursion level: 101, stack pointer: 0x16F4DF5E0, depth: 322.53 kB
Recursion level: 102, stack pointer: 0x16F4DE970, depth: 325.64 kB
Recursion level: 103, stack pointer: 0x16F4DDD00, depth: 328.75 kB
Recursion level: 104, stack pointer: 0x16F4DD090, depth: 331.86 kB
Recursion level: 105, stack pointer: 0x16F4DC420, depth: 334.97 kB
Recursion level: 106, stack pointer: 0x16F4DB7B0, depth: 338.08 kB
Recursion level: 107, stack pointer: 0x16F4DAB40, depth: 341.19 kB
Recursion level: 108, stack pointer: 0x16F4D9ED0, depth: 344.30 kB
Recursion level: 109, stack pointer: 0x16F4D9260, depth: 347.41 kB
Recursion level: 110, stack pointer: 0x16F4D85F0, depth: 350.52 kB
Recursion level: 111, stack pointer: 0x16F4D7980, depth: 353.62 kB
Recursion level: 112, stack pointer: 0x16F4D6D10, depth: 356.73 kB
Recursion level: 113, stack pointer: 0x16F4D60A0, depth: 359.84 kB
Recursion level: 114, stack pointer: 0x16F4D5430, depth: 362.95 kB
Recursion level: 115, stack pointer: 0x16F4D47C0, depth: 366.06 kB
Recursion level: 116, stack pointer: 0x16F4D3B50, depth: 369.17 kB
Recursion level: 117, stack pointer: 0x16F4D2EE0, depth: 372.28 kB
Recursion level: 118, stack pointer: 0x16F4D2270, depth: 375.39 kB
Recursion level: 119, stack pointer: 0x16F4D1600, depth: 378.50 kB
Recursion level: 120, stack pointer: 0x16F4D0990, depth: 381.61 kB
Recursion level: 121, stack pointer: 0x16F4CFD20, depth: 384.72 kB
Recursion level: 122, stack pointer: 0x16F4CF0B0, depth: 387.83 kB
Recursion level: 123, stack pointer: 0x16F4CE440, depth: 390.94 kB
Recursion level: 124, stack pointer: 0x16F4CD7D0, depth: 394.05 kB
Recursion level: 125, stack pointer: 0x16F4CCB60, depth: 397.16 kB
Recursion level: 126, stack pointer: 0x16F4CBEF0, depth: 400.27 kB
Recursion level: 127, stack pointer: 0x16F4CB280, depth: 403.38 kB
Recursion level: 128, stack pointer: 0x16F4CA610, depth: 406.48 kB
Recursion level: 129, stack pointer: 0x16F4C99A0, depth: 409.59 kB
Recursion level: 130, stack pointer: 0x16F4C8D30, depth: 412.70 kB
Recursion level: 131, stack pointer: 0x16F4C80C0, depth: 415.81 kB
Recursion level: 132, stack pointer: 0x16F4C7450, depth: 418.92 kB
Recursion level: 133, stack pointer: 0x16F4C67E0, depth: 422.03 kB
Recursion level: 134, stack pointer: 0x16F4C5B70, depth: 425.14 kB
Recursion level: 135, stack pointer: 0x16F4C4F00, depth: 428.25 kB
Recursion level: 136, stack pointer: 0x16F4C4290, depth: 431.36 kB
Recursion level: 137, stack pointer: 0x16F4C3620, depth: 434.47 kB
Recursion level: 138, stack pointer: 0x16F4C29B0, depth: 437.58 kB
Recursion level: 139, stack pointer: 0x16F4C1D40, depth: 440.69 kB
Recursion level: 140, stack pointer: 0x16F4C10D0, depth: 443.80 kB
Recursion level: 141, stack pointer: 0x16F4C0460, depth: 446.91 kB
Recursion level: 142, stack pointer: 0x16F4BF7F0, depth: 450.02 kB
Recursion level: 143, stack pointer: 0x16F4BEB80, depth: 453.12 kB
Recursion level: 144, stack pointer: 0x16F4BDF10, depth: 456.23 kB
Recursion level: 145, stack pointer: 0x16F4BD2A0, depth: 459.34 kB
Recursion level: 146, stack pointer: 0x16F4BC630, depth: 462.45 kB
Recursion level: 147, stack pointer: 0x16F4BB9C0, depth: 465.56 kB
Recursion level: 148, stack pointer: 0x16F4BAD50, depth: 468.67 kB
Recursion level: 149, stack pointer: 0x16F4BA0E0, depth: 471.78 kB
Recursion level: 150, stack pointer: 0x16F4B9470, depth: 474.89 kB
[...]
Recursion level: 950, stack pointer: 0x16F24B670, depth: 2962.39 kB
Recursion level: 951, stack pointer: 0x16F24AA00, depth: 2965.50 kB
Recursion level: 952, stack pointer: 0x16F249D90, depth: 2968.61 kB
Recursion level: 953, stack pointer: 0x16F249120, depth: 2971.72 kB
Recursion level: 954, stack pointer: 0x16F2484B0, depth: 2974.83 kB
Recursion level: 955, stack pointer: 0x16F247840, depth: 2977.94 kB
Recursion level: 956, stack pointer: 0x16F246BD0, depth: 2981.05 kB
Recursion level: 957, stack pointer: 0x16F245F60, depth: 2984.16 kB
Recursion level: 958, stack pointer: 0x16F2452F0, depth: 2987.27 kB
Recursion level: 959, stack pointer: 0x16F244680, depth: 2990.38 kB
Recursion level: 960, stack pointer: 0x16F243A10, depth: 2993.48 kB
Recursion level: 961, stack pointer: 0x16F242DA0, depth: 2996.59 kB
Recursion level: 962, stack pointer: 0x16F242130, depth: 2999.70 kB
Recursion level: 963, stack pointer: 0x16F2414C0, depth: 3002.81 kB
Recursion level: 964, stack pointer: 0x16F240850, depth: 3005.92 kB
Recursion level: 965, stack pointer: 0x16F23FBE0, depth: 3009.03 kB
Recursion level: 966, stack pointer: 0x16F23EF70, depth: 3012.14 kB
Recursion level: 967, stack pointer: 0x16F23E300, depth: 3015.25 kB
Recursion level: 968, stack pointer: 0x16F23D690, depth: 3018.36 kB
Recursion level: 969, stack pointer: 0x16F23CA20, depth: 3021.47 kB
Recursion level: 970, stack pointer: 0x16F23BDB0, depth: 3024.58 kB
Recursion level: 971, stack pointer: 0x16F23B140, depth: 3027.69 kB
Recursion level: 972, stack pointer: 0x16F23A4D0, depth: 3030.80 kB
Recursion level: 973, stack pointer: 0x16F239860, depth: 3033.91 kB
Recursion level: 974, stack pointer: 0x16F238BF0, depth: 3037.02 kB
Recursion level: 975, stack pointer: 0x16F237F80, depth: 3040.12 kB
Recursion level: 976, stack pointer: 0x16F237310, depth: 3043.23 kB
Recursion level: 977, stack pointer: 0x16F2366A0, depth: 3046.34 kB
Recursion level: 978, stack pointer: 0x16F235A30, depth: 3049.45 kB
Recursion level: 979, stack pointer: 0x16F234DC0, depth: 3052.56 kB
Recursion level: 980, stack pointer: 0x16F234150, depth: 3055.67 kB
Recursion level: 981, stack pointer: 0x16F2334E0, depth: 3058.78 kB
Recursion level: 982, stack pointer: 0x16F232870, depth: 3061.89 kB
Recursion level: 983, stack pointer: 0x16F231C00, depth: 3065.00 kB
Recursion level: 984, stack pointer: 0x16F230F90, depth: 3068.11 kB
Recursion level: 985, stack pointer: 0x16F230320, depth: 3071.22 kB
Recursion level: 986, stack pointer: 0x16F22F6B0, depth: 3074.33 kB
Recursion level: 987, stack pointer: 0x16F22EA40, depth: 3077.44 kB
Recursion level: 988, stack pointer: 0x16F22DDD0, depth: 3080.55 kB
Recursion level: 989, stack pointer: 0x16F22D160, depth: 3083.66 kB
Recursion level: 990, stack pointer: 0x16F22C4F0, depth: 3086.77 kB
Recursion level: 991, stack pointer: 0x16F22B880, depth: 3089.88 kB
Recursion level: 992, stack pointer: 0x16F22AC10, depth: 3092.98 kB
Recursion level: 993, stack pointer: 0x16F229FA0, depth: 3096.09 kB
Recursion level: 994, stack pointer: 0x16F229330, depth: 3099.20 kB
Recursion level: 995, stack pointer: 0x16F2286C0, depth: 3102.31 kB
Recursion level: 996, stack pointer: 0x16F227A50, depth: 3105.42 kB
Recursion level: 997, stack pointer: 0x16F226DE0, depth: 3108.53 kB
Recursion level: 998, stack pointer: 0x16F226170, depth: 3111.64 kB
Recursion level: 999, stack pointer: 0x16F225500, depth: 3114.75 kB
Recursion Limit ok (reached level 999)
Running with manually built 3.14.0b1:
Output
% ./python-bin/bin/python3.14 repro.py
Stack address: 6089015296 = 0x16AEF0000
Stack size: 16777216 = 16384.0 kB = 16.0 MB
Stack pointer: 0x16AEEE1D0, depth: 7.55 kB
Testing Recursion Limit
Recursion level: 1, stack pointer: 0x16AEED910, depth: 9.73 kB
Recursion level: 2, stack pointer: 0x16AEED050, depth: 11.92 kB
Recursion level: 3, stack pointer: 0x16AEEC7C0, depth: 14.06 kB
Recursion level: 4, stack pointer: 0x16AEEBF30, depth: 16.20 kB
Recursion level: 5, stack pointer: 0x16AEEB6A0, depth: 18.34 kB
Recursion level: 6, stack pointer: 0x16AEEAE10, depth: 20.48 kB
Recursion level: 7, stack pointer: 0x16AEEA580, depth: 22.62 kB
Recursion level: 8, stack pointer: 0x16AEE9CF0, depth: 24.77 kB
Recursion level: 9, stack pointer: 0x16AEE9460, depth: 26.91 kB
Recursion level: 10, stack pointer: 0x16AEE8BD0, depth: 29.05 kB
Recursion level: 11, stack pointer: 0x16AEE8340, depth: 31.19 kB
Recursion level: 12, stack pointer: 0x16AEE7AB0, depth: 33.33 kB
Recursion level: 13, stack pointer: 0x16AEE7220, depth: 35.47 kB
Recursion level: 14, stack pointer: 0x16AEE6990, depth: 37.61 kB
Recursion level: 15, stack pointer: 0x16AEE6100, depth: 39.75 kB
Recursion level: 16, stack pointer: 0x16AEE5870, depth: 41.89 kB
Recursion level: 17, stack pointer: 0x16AEE4FE0, depth: 44.03 kB
Recursion level: 18, stack pointer: 0x16AEE4750, depth: 46.17 kB
Recursion level: 19, stack pointer: 0x16AEE3EC0, depth: 48.31 kB
Recursion level: 20, stack pointer: 0x16AEE3630, depth: 50.45 kB
Recursion level: 21, stack pointer: 0x16AEE2DA0, depth: 52.59 kB
Recursion level: 22, stack pointer: 0x16AEE2510, depth: 54.73 kB
Recursion level: 23, stack pointer: 0x16AEE1C80, depth: 56.88 kB
Recursion level: 24, stack pointer: 0x16AEE13F0, depth: 59.02 kB
Recursion level: 25, stack pointer: 0x16AEE0B60, depth: 61.16 kB
Recursion level: 26, stack pointer: 0x16AEE02D0, depth: 63.30 kB
Recursion level: 27, stack pointer: 0x16AEDFA40, depth: 65.44 kB
Recursion level: 28, stack pointer: 0x16AEDF1B0, depth: 67.58 kB
Recursion level: 29, stack pointer: 0x16AEDE920, depth: 69.72 kB
Recursion level: 30, stack pointer: 0x16AEDE090, depth: 71.86 kB
Recursion level: 31, stack pointer: 0x16AEDD800, depth: 74.00 kB
Recursion level: 32, stack pointer: 0x16AEDCF70, depth: 76.14 kB
Recursion level: 33, stack pointer: 0x16AEDC6E0, depth: 78.28 kB
Recursion level: 34, stack pointer: 0x16AEDBE50, depth: 80.42 kB
Recursion level: 35, stack pointer: 0x16AEDB5C0, depth: 82.56 kB
Recursion level: 36, stack pointer: 0x16AEDAD30, depth: 84.70 kB
Recursion level: 37, stack pointer: 0x16AEDA4A0, depth: 86.84 kB
Recursion level: 38, stack pointer: 0x16AED9C10, depth: 88.98 kB
Recursion level: 39, stack pointer: 0x16AED9380, depth: 91.12 kB
Recursion level: 40, stack pointer: 0x16AED8AF0, depth: 93.27 kB
Recursion level: 41, stack pointer: 0x16AED8260, depth: 95.41 kB
Recursion level: 42, stack pointer: 0x16AED79D0, depth: 97.55 kB
Recursion level: 43, stack pointer: 0x16AED7140, depth: 99.69 kB
Recursion level: 44, stack pointer: 0x16AED68B0, depth: 101.83 kB
Recursion level: 45, stack pointer: 0x16AED6020, depth: 103.97 kB
Recursion level: 46, stack pointer: 0x16AED5790, depth: 106.11 kB
Recursion level: 47, stack pointer: 0x16AED4F00, depth: 108.25 kB
Recursion level: 48, stack pointer: 0x16AED4670, depth: 110.39 kB
Recursion level: 49, stack pointer: 0x16AED3DE0, depth: 112.53 kB
Recursion level: 50, stack pointer: 0x16AED3550, depth: 114.67 kB
Recursion level: 51, stack pointer: 0x16AED2CC0, depth: 116.81 kB
Recursion level: 52, stack pointer: 0x16AED2430, depth: 118.95 kB
Recursion level: 53, stack pointer: 0x16AED1BA0, depth: 121.09 kB
Recursion level: 54, stack pointer: 0x16AED1310, depth: 123.23 kB
Recursion level: 55, stack pointer: 0x16AED0A80, depth: 125.38 kB
Recursion level: 56, stack pointer: 0x16AED01F0, depth: 127.52 kB
Recursion level: 57, stack pointer: 0x16AECF960, depth: 129.66 kB
Recursion level: 58, stack pointer: 0x16AECF0D0, depth: 131.80 kB
Recursion level: 59, stack pointer: 0x16AECE840, depth: 133.94 kB
Recursion level: 60, stack pointer: 0x16AECDFB0, depth: 136.08 kB
Recursion level: 61, stack pointer: 0x16AECD720, depth: 138.22 kB
Recursion level: 62, stack pointer: 0x16AECCE90, depth: 140.36 kB
Recursion level: 63, stack pointer: 0x16AECC600, depth: 142.50 kB
Recursion level: 64, stack pointer: 0x16AECBD70, depth: 144.64 kB
Recursion level: 65, stack pointer: 0x16AECB4E0, depth: 146.78 kB
Recursion level: 66, stack pointer: 0x16AECAC50, depth: 148.92 kB
Recursion level: 67, stack pointer: 0x16AECA3C0, depth: 151.06 kB
Recursion level: 68, stack pointer: 0x16AEC9B30, depth: 153.20 kB
Recursion level: 69, stack pointer: 0x16AEC92A0, depth: 155.34 kB
Recursion level: 70, stack pointer: 0x16AEC8A10, depth: 157.48 kB
Recursion level: 71, stack pointer: 0x16AEC8180, depth: 159.62 kB
Recursion level: 72, stack pointer: 0x16AEC78F0, depth: 161.77 kB
Recursion level: 73, stack pointer: 0x16AEC7060, depth: 163.91 kB
Recursion level: 74, stack pointer: 0x16AEC67D0, depth: 166.05 kB
Recursion level: 75, stack pointer: 0x16AEC5F40, depth: 168.19 kB
Recursion level: 76, stack pointer: 0x16AEC56B0, depth: 170.33 kB
Recursion level: 77, stack pointer: 0x16AEC4E20, depth: 172.47 kB
Recursion level: 78, stack pointer: 0x16AEC4590, depth: 174.61 kB
Recursion level: 79, stack pointer: 0x16AEC3D00, depth: 176.75 kB
Recursion level: 80, stack pointer: 0x16AEC3470, depth: 178.89 kB
Recursion level: 81, stack pointer: 0x16AEC2BE0, depth: 181.03 kB
Recursion level: 82, stack pointer: 0x16AEC2350, depth: 183.17 kB
Recursion level: 83, stack pointer: 0x16AEC1AC0, depth: 185.31 kB
Recursion level: 84, stack pointer: 0x16AEC1230, depth: 187.45 kB
Recursion level: 85, stack pointer: 0x16AEC09A0, depth: 189.59 kB
Recursion level: 86, stack pointer: 0x16AEC0110, depth: 191.73 kB
Recursion level: 87, stack pointer: 0x16AEBF880, depth: 193.88 kB
Recursion level: 88, stack pointer: 0x16AEBEFF0, depth: 196.02 kB
Recursion level: 89, stack pointer: 0x16AEBE760, depth: 198.16 kB
Recursion level: 90, stack pointer: 0x16AEBDED0, depth: 200.30 kB
Recursion level: 91, stack pointer: 0x16AEBD640, depth: 202.44 kB
Recursion level: 92, stack pointer: 0x16AEBCDB0, depth: 204.58 kB
Recursion level: 93, stack pointer: 0x16AEBC520, depth: 206.72 kB
Recursion level: 94, stack pointer: 0x16AEBBC90, depth: 208.86 kB
Recursion level: 95, stack pointer: 0x16AEBB400, depth: 211.00 kB
Recursion level: 96, stack pointer: 0x16AEBAB70, depth: 213.14 kB
Recursion level: 97, stack pointer: 0x16AEBA2E0, depth: 215.28 kB
Recursion level: 98, stack pointer: 0x16AEB9A50, depth: 217.42 kB
Recursion level: 99, stack pointer: 0x16AEB91C0, depth: 219.56 kB
Recursion level: 100, stack pointer: 0x16AEB8930, depth: 221.70 kB
Recursion level: 101, stack pointer: 0x16AEB80A0, depth: 223.84 kB
Recursion level: 102, stack pointer: 0x16AEB7810, depth: 225.98 kB
Recursion level: 103, stack pointer: 0x16AEB6F80, depth: 228.12 kB
Recursion level: 104, stack pointer: 0x16AEB66F0, depth: 230.27 kB
Recursion level: 105, stack pointer: 0x16AEB5E60, depth: 232.41 kB
Recursion level: 106, stack pointer: 0x16AEB55D0, depth: 234.55 kB
Recursion level: 107, stack pointer: 0x16AEB4D40, depth: 236.69 kB
Recursion level: 108, stack pointer: 0x16AEB44B0, depth: 238.83 kB
Recursion level: 109, stack pointer: 0x16AEB3C20, depth: 240.97 kB
Recursion level: 110, stack pointer: 0x16AEB3390, depth: 243.11 kB
Recursion level: 111, stack pointer: 0x16AEB2B00, depth: 245.25 kB
Recursion level: 112, stack pointer: 0x16AEB2270, depth: 247.39 kB
Recursion level: 113, stack pointer: 0x16AEB19E0, depth: 249.53 kB
Recursion level: 114, stack pointer: 0x16AEB1150, depth: 251.67 kB
Recursion level: 115, stack pointer: 0x16AEB08C0, depth: 253.81 kB
Recursion level: 116, stack pointer: 0x16AEB0030, depth: 255.95 kB
Recursion level: 117, stack pointer: 0x16AEAF7A0, depth: 258.09 kB
Recursion level: 118, stack pointer: 0x16AEAEF10, depth: 260.23 kB
Recursion level: 119, stack pointer: 0x16AEAE680, depth: 262.38 kB
Recursion level: 120, stack pointer: 0x16AEADDF0, depth: 264.52 kB
Recursion level: 121, stack pointer: 0x16AEAD560, depth: 266.66 kB
Recursion level: 122, stack pointer: 0x16AEACCD0, depth: 268.80 kB
Recursion level: 123, stack pointer: 0x16AEAC440, depth: 270.94 kB
Recursion level: 124, stack pointer: 0x16AEABBB0, depth: 273.08 kB
Recursion level: 125, stack pointer: 0x16AEAB320, depth: 275.22 kB
Recursion level: 126, stack pointer: 0x16AEAAA90, depth: 277.36 kB
Recursion level: 127, stack pointer: 0x16AEAA200, depth: 279.50 kB
Recursion level: 128, stack pointer: 0x16AEA9970, depth: 281.64 kB
Recursion level: 129, stack pointer: 0x16AEA90E0, depth: 283.78 kB
Recursion level: 130, stack pointer: 0x16AEA8850, depth: 285.92 kB
Recursion level: 131, stack pointer: 0x16AEA7FC0, depth: 288.06 kB
Recursion level: 132, stack pointer: 0x16AEA7730, depth: 290.20 kB
Recursion level: 133, stack pointer: 0x16AEA6EA0, depth: 292.34 kB
Recursion level: 134, stack pointer: 0x16AEA6610, depth: 294.48 kB
Recursion level: 135, stack pointer: 0x16AEA5D80, depth: 296.62 kB
Recursion level: 136, stack pointer: 0x16AEA54F0, depth: 298.77 kB
Recursion level: 137, stack pointer: 0x16AEA4C60, depth: 300.91 kB
Recursion level: 138, stack pointer: 0x16AEA43D0, depth: 303.05 kB
Recursion level: 139, stack pointer: 0x16AEA3B40, depth: 305.19 kB
Recursion level: 140, stack pointer: 0x16AEA32B0, depth: 307.33 kB
Recursion level: 141, stack pointer: 0x16AEA2A20, depth: 309.47 kB
Recursion level: 142, stack pointer: 0x16AEA2190, depth: 311.61 kB
Recursion level: 143, stack pointer: 0x16AEA1900, depth: 313.75 kB
Recursion level: 144, stack pointer: 0x16AEA1070, depth: 315.89 kB
Recursion level: 145, stack pointer: 0x16AEA07E0, depth: 318.03 kB
Recursion level: 146, stack pointer: 0x16AE9FF50, depth: 320.17 kB
Recursion level: 147, stack pointer: 0x16AE9F6C0, depth: 322.31 kB
Recursion level: 148, stack pointer: 0x16AE9EE30, depth: 324.45 kB
Recursion level: 149, stack pointer: 0x16AE9E5A0, depth: 326.59 kB
Recursion level: 150, stack pointer: 0x16AE9DD10, depth: 328.73 kB
[...]
Recursion level: 950, stack pointer: 0x16ACF1B10, depth: 2041.23 kB
Recursion level: 951, stack pointer: 0x16ACF1280, depth: 2043.38 kB
Recursion level: 952, stack pointer: 0x16ACF09F0, depth: 2045.52 kB
Recursion level: 953, stack pointer: 0x16ACF0160, depth: 2047.66 kB
Recursion level: 954, stack pointer: 0x16ACEF8D0, depth: 2049.80 kB
Recursion level: 955, stack pointer: 0x16ACEF040, depth: 2051.94 kB
Recursion level: 956, stack pointer: 0x16ACEE7B0, depth: 2054.08 kB
Recursion level: 957, stack pointer: 0x16ACEDF20, depth: 2056.22 kB
Recursion level: 958, stack pointer: 0x16ACED690, depth: 2058.36 kB
Recursion level: 959, stack pointer: 0x16ACECE00, depth: 2060.50 kB
Recursion level: 960, stack pointer: 0x16ACEC570, depth: 2062.64 kB
Recursion level: 961, stack pointer: 0x16ACEBCE0, depth: 2064.78 kB
Recursion level: 962, stack pointer: 0x16ACEB450, depth: 2066.92 kB
Recursion level: 963, stack pointer: 0x16ACEABC0, depth: 2069.06 kB
Recursion level: 964, stack pointer: 0x16ACEA330, depth: 2071.20 kB
Recursion level: 965, stack pointer: 0x16ACE9AA0, depth: 2073.34 kB
Recursion level: 966, stack pointer: 0x16ACE9210, depth: 2075.48 kB
Recursion level: 967, stack pointer: 0x16ACE8980, depth: 2077.62 kB
Recursion level: 968, stack pointer: 0x16ACE80F0, depth: 2079.77 kB
Recursion level: 969, stack pointer: 0x16ACE7860, depth: 2081.91 kB
Recursion level: 970, stack pointer: 0x16ACE6FD0, depth: 2084.05 kB
Recursion level: 971, stack pointer: 0x16ACE6740, depth: 2086.19 kB
Recursion level: 972, stack pointer: 0x16ACE5EB0, depth: 2088.33 kB
Recursion level: 973, stack pointer: 0x16ACE5620, depth: 2090.47 kB
Recursion level: 974, stack pointer: 0x16ACE4D90, depth: 2092.61 kB
Recursion level: 975, stack pointer: 0x16ACE4500, depth: 2094.75 kB
Recursion level: 976, stack pointer: 0x16ACE3C70, depth: 2096.89 kB
Recursion level: 977, stack pointer: 0x16ACE33E0, depth: 2099.03 kB
Recursion level: 978, stack pointer: 0x16ACE2B50, depth: 2101.17 kB
Recursion level: 979, stack pointer: 0x16ACE22C0, depth: 2103.31 kB
Recursion level: 980, stack pointer: 0x16ACE1A30, depth: 2105.45 kB
Recursion level: 981, stack pointer: 0x16ACE11A0, depth: 2107.59 kB
Recursion level: 982, stack pointer: 0x16ACE0910, depth: 2109.73 kB
Recursion level: 983, stack pointer: 0x16ACE0080, depth: 2111.88 kB
Recursion level: 984, stack pointer: 0x16ACDF7F0, depth: 2114.02 kB
Recursion level: 985, stack pointer: 0x16ACDEF60, depth: 2116.16 kB
Recursion level: 986, stack pointer: 0x16ACDE6D0, depth: 2118.30 kB
Recursion level: 987, stack pointer: 0x16ACDDE40, depth: 2120.44 kB
Recursion level: 988, stack pointer: 0x16ACDD5B0, depth: 2122.58 kB
Recursion level: 989, stack pointer: 0x16ACDCD20, depth: 2124.72 kB
Recursion level: 990, stack pointer: 0x16ACDC490, depth: 2126.86 kB
Recursion level: 991, stack pointer: 0x16ACDBC00, depth: 2129.00 kB
Recursion level: 992, stack pointer: 0x16ACDB370, depth: 2131.14 kB
Recursion level: 993, stack pointer: 0x16ACDAAE0, depth: 2133.28 kB
Recursion level: 994, stack pointer: 0x16ACDA250, depth: 2135.42 kB
Recursion level: 995, stack pointer: 0x16ACD99C0, depth: 2137.56 kB
Recursion level: 996, stack pointer: 0x16ACD9130, depth: 2139.70 kB
Recursion level: 997, stack pointer: 0x16ACD88A0, depth: 2141.84 kB
Recursion level: 998, stack pointer: 0x16ACD8010, depth: 2143.98 kB
Recursion level: 999, stack pointer: 0x16ACD7780, depth: 2146.12 kB
Recursion Limit ok (reached level 999
inventshah commented on Aug 14, 2025 The repro is fixed in 3.14.0rc2 (via #137731). @tomMoral might want to confirm with the cloudpickle CI. tomMoral commented on Aug 25, 2025 ContributorAuthor More actions I can confirm this is fixed, the same test now gives a comprehensive error instead of crashing the interpreter:
thanks for the fix!
MetadataMetadataDevelopmentNo branches or pull requestsIssue actions
|