# Create a deeply nested structure.
head = last = []
# The max stack depth should match the value in Python/marshal.c.
- if os.name == 'nt' and hasattr(sys, 'gettotalrefcount'):
+ # BUG: https://bugs.python.org/issue33720
+ # Windows always limits the maximum depth on release and debug builds
+ #if os.name == 'nt' and hasattr(sys, 'gettotalrefcount'):
+ if os.name == 'nt':
MAX_MARSHAL_STACK_DEPTH = 1000
else:
MAX_MARSHAL_STACK_DEPTH = 2000
* 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.
+ *
+ * BUG: https://bugs.python.org/issue33720
+ * On Windows PGO builds, the r_object function overallocates its stack and
+ * can cause a stack overflow. We reduce the maximum depth for all Windows
+ * releases to protect against this.
+ * #if defined(MS_WINDOWS) && defined(_DEBUG)
*/
-#if defined(MS_WINDOWS) && defined(_DEBUG)
+#if defined(MS_WINDOWS)
#define MAX_MARSHAL_STACK_DEPTH 1000
#else
#define MAX_MARSHAL_STACK_DEPTH 2000