summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Cannon <brett@python.org>2022-11-01 22:51:05 (GMT)
committerGitHub <noreply@github.com>2022-11-01 22:51:05 (GMT)
commit9711265182f163ba381e7800e3748ac28710f9ef (patch)
tree8c71b961eff103e00b93bbaeacf108baa86bbf25
parentc0859743d9ad3bbd4c021200f4162cfeadc0c17a (diff)
downloadcpython-9711265182f163ba381e7800e3748ac28710f9ef.zip
cpython-9711265182f163ba381e7800e3748ac28710f9ef.tar.gz
cpython-9711265182f163ba381e7800e3748ac28710f9ef.tar.bz2
gh-98925: Lower marshal recursion depth for WASI (GH-98938)
For wasmtime 2.0, the stack depth cost is 6% higher. This causes the default max `marshal` recursion depth to blow the stack. As the default marshal depth is 2000 and Windows is set to 1000, split the difference and choose 1500 for WASI to be safe.
-rw-r--r--.gitignore1
-rw-r--r--Lib/test/test_marshal.py2
-rw-r--r--Misc/NEWS.d/next/Core and Builtins/2022-10-31-18-03-10.gh-issue-98925.zpdjVd.rst2
-rw-r--r--Python/marshal.c2
4 files changed, 7 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 6934faa..5055e6d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -116,6 +116,7 @@ PCbuild/win32/
Tools/unicode/data/
/autom4te.cache
/build/
+/builddir/
/config.cache
/config.log
/config.status
diff --git a/Lib/test/test_marshal.py b/Lib/test/test_marshal.py
index fe4f368..54c5a32 100644
--- a/Lib/test/test_marshal.py
+++ b/Lib/test/test_marshal.py
@@ -260,6 +260,8 @@ class BugsTestCase(unittest.TestCase):
#if os.name == 'nt' and support.Py_DEBUG:
if os.name == 'nt':
MAX_MARSHAL_STACK_DEPTH = 1000
+ elif sys.platform == 'wasi':
+ MAX_MARSHAL_STACK_DEPTH = 1500
else:
MAX_MARSHAL_STACK_DEPTH = 2000
for i in range(MAX_MARSHAL_STACK_DEPTH - 2):
diff --git a/Misc/NEWS.d/next/Core and Builtins/2022-10-31-18-03-10.gh-issue-98925.zpdjVd.rst b/Misc/NEWS.d/next/Core and Builtins/2022-10-31-18-03-10.gh-issue-98925.zpdjVd.rst
new file mode 100644
index 0000000..7c965dc
--- /dev/null
+++ b/Misc/NEWS.d/next/Core and Builtins/2022-10-31-18-03-10.gh-issue-98925.zpdjVd.rst
@@ -0,0 +1,2 @@
+Lower the recursion depth for marshal on WASI to support (in-development)
+wasmtime 2.0.
diff --git a/Python/marshal.c b/Python/marshal.c
index 90a4405..2690f55 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -34,6 +34,8 @@ module marshal
*/
#if defined(MS_WINDOWS)
#define MAX_MARSHAL_STACK_DEPTH 1000
+#elif defined(__wasi__)
+#define MAX_MARSHAL_STACK_DEPTH 1500
#else
#define MAX_MARSHAL_STACK_DEPTH 2000
#endif