diff options
author | Benjamin Peterson <benjamin@python.org> | 2016-07-07 06:37:02 (GMT) |
---|---|---|
committer | Benjamin Peterson <benjamin@python.org> | 2016-07-07 06:37:02 (GMT) |
commit | 64c82753de70f312c80797f63b6b8b98232b6f0f (patch) | |
tree | 0253098623eeb44e0e417d126bd3da183400b5f9 | |
parent | ee69451f344847858919bacf00a087c77f381264 (diff) | |
download | cpython-64c82753de70f312c80797f63b6b8b98232b6f0f.zip cpython-64c82753de70f312c80797f63b6b8b98232b6f0f.tar.gz cpython-64c82753de70f312c80797f63b6b8b98232b6f0f.tar.bz2 |
reduce marshal stack size in debug mode on windows (closes #27019)
-rw-r--r-- | Lib/test/test_marshal.py | 5 | ||||
-rw-r--r-- | Python/marshal.c | 5 |
2 files changed, 9 insertions, 1 deletions
diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py index 1967c48..76d59ba 100644 --- a/Lib/test/test_marshal.py +++ b/Lib/test/test_marshal.py @@ -234,7 +234,10 @@ class BugsTestCase(unittest.TestCase): # Create a deeply nested structure. head = last = [] # The max stack depth should match the value in Python/marshal.c. - MAX_MARSHAL_STACK_DEPTH = 2000 + if os.name == 'nt' and hasattr(sys, 'gettotalrefcount'): + MAX_MARSHAL_STACK_DEPTH = 1000 + else: + MAX_MARSHAL_STACK_DEPTH = 2000 for i in range(MAX_MARSHAL_STACK_DEPTH - 2): last.append([0]) last = last[-1] diff --git a/Python/marshal.c b/Python/marshal.c index 6b285aa..e1a84d0 100644 --- a/Python/marshal.c +++ b/Python/marshal.c @@ -16,8 +16,13 @@ /* High water mark to determine when the marshalled object is dangerously deep * and risks coring the interpreter. When the object stack gets this deep, * raise an exception instead of continuing. + * On Windows debug builds, reduce this value. */ +#if defined(MS_WINDOWS) && defined(_DEBUG) +#define MAX_MARSHAL_STACK_DEPTH 1000 +#else #define MAX_MARSHAL_STACK_DEPTH 2000 +#endif #define TYPE_NULL '0' #define TYPE_NONE 'N' |