diff options
author | Brett Cannon <brett@python.org> | 2022-11-01 22:51:05 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-11-01 22:51:05 (GMT) |
commit | 9711265182f163ba381e7800e3748ac28710f9ef (patch) | |
tree | 8c71b961eff103e00b93bbaeacf108baa86bbf25 | |
parent | c0859743d9ad3bbd4c021200f4162cfeadc0c17a (diff) | |
download | cpython-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-- | .gitignore | 1 | ||||
-rw-r--r-- | Lib/test/test_marshal.py | 2 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2022-10-31-18-03-10.gh-issue-98925.zpdjVd.rst | 2 | ||||
-rw-r--r-- | Python/marshal.c | 2 |
4 files changed, 7 insertions, 0 deletions
@@ -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 |