Mailing List Archive

gh-117645: Increase WASI stack size from 512 KiB to 8 MiB (#117674)
https://github.com/python/cpython/commit/919784737c69e0f8e34d7d7a2e85b02628af6e66
commit: 919784737c69e0f8e34d7d7a2e85b02628af6e66
branch: main
author: Victor Stinner <vstinner@python.org>
committer: vstinner <vstinner@python.org>
date: 2024-04-16T23:26:54+02:00
summary:

gh-117645: Increase WASI stack size from 512 KiB to 8 MiB (#117674)

Increase also the initial memory from 10 MiB to 20 MiB.

Reenable test_dynamic on WASI build.

files:
A Misc/NEWS.d/next/Build/2024-04-09-12-59-06.gh-issue-117645.0oEVAa.rst
M Include/cpython/pystate.h
M Lib/test/test_dynamic.py
M configure
M configure.ac

diff --git a/Include/cpython/pystate.h b/Include/cpython/pystate.h
index 7fb6b176392173..6d5dba2bf3725b 100644
--- a/Include/cpython/pystate.h
+++ b/Include/cpython/pystate.h
@@ -198,14 +198,6 @@ struct _ts {
#ifdef Py_DEBUG
// A debug build is likely built with low optimization level which implies
// higher stack memory usage than a release build: use a lower limit.
-# if defined(__wasi__)
- // Based on wasmtime 16.
-# define Py_C_RECURSION_LIMIT 150
-# else
-# define Py_C_RECURSION_LIMIT 500
-# endif
-#elif defined(__wasi__)
- // Based on wasmtime 16.
# define Py_C_RECURSION_LIMIT 500
#elif defined(__s390x__)
# define Py_C_RECURSION_LIMIT 800
@@ -219,6 +211,9 @@ struct _ts {
# define Py_C_RECURSION_LIMIT 3000
#elif defined(_Py_ADDRESS_SANITIZER)
# define Py_C_RECURSION_LIMIT 4000
+#elif defined(__wasi__)
+ // Based on wasmtime 16.
+# define Py_C_RECURSION_LIMIT 5000
#else
// This value is duplicated in Lib/test/support/__init__.py
# define Py_C_RECURSION_LIMIT 10000
diff --git a/Lib/test/test_dynamic.py b/Lib/test/test_dynamic.py
index 0cb56a98f1c12a..0aa3be6a1bde6a 100644
--- a/Lib/test/test_dynamic.py
+++ b/Lib/test/test_dynamic.py
@@ -4,7 +4,7 @@
import sys
import unittest

-from test.support import is_wasi, swap_item, swap_attr
+from test.support import swap_item, swap_attr


class RebindBuiltinsTests(unittest.TestCase):
@@ -134,7 +134,6 @@ def test_eval_gives_lambda_custom_globals(self):

self.assertEqual(foo(), 7)

- @unittest.skipIf(is_wasi, "stack depth too shallow in WASI")
def test_load_global_specialization_failure_keeps_oparg(self):
# https://github.com/python/cpython/issues/91625
class MyGlobals(dict):
diff --git a/Misc/NEWS.d/next/Build/2024-04-09-12-59-06.gh-issue-117645.0oEVAa.rst b/Misc/NEWS.d/next/Build/2024-04-09-12-59-06.gh-issue-117645.0oEVAa.rst
new file mode 100644
index 00000000000000..83df6338c291ab
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2024-04-09-12-59-06.gh-issue-117645.0oEVAa.rst
@@ -0,0 +1,2 @@
+Increase WASI stack size from 512 KiB to 8 MiB and the initial memory from 10
+MiB to 20 MiB. Patch by Victor Stinner.
diff --git a/configure b/configure
index 80403255a814af..6782d470aadfff 100755
--- a/configure
+++ b/configure
@@ -9530,7 +9530,7 @@ then :

fi

- as_fn_append LDFLAGS_NODIST " -z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760"
+ as_fn_append LDFLAGS_NODIST " -z stack-size=8388608 -Wl,--stack-first -Wl,--initial-memory=20971520"

;; #(
*) :
diff --git a/configure.ac b/configure.ac
index ec925d4d4a0a5a..51a0d35dbc328e 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2384,9 +2384,10 @@ AS_CASE([$ac_sys_system],
AS_VAR_APPEND([LDFLAGS_NODIST], [" -Wl,--max-memory=10485760"])
])

- dnl increase initial memory and stack size, move stack first
+ dnl gh-117645: Set the memory size to 20 MiB, the stack size to 8 MiB,
+ dnl and move the stack first.
dnl https://github.com/WebAssembly/wasi-libc/issues/233
- AS_VAR_APPEND([LDFLAGS_NODIST], [" -z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760"])
+ AS_VAR_APPEND([LDFLAGS_NODIST], [" -z stack-size=8388608 -Wl,--stack-first -Wl,--initial-memory=20971520"])
]
)


_______________________________________________
Python-checkins mailing list -- python-checkins@python.org
To unsubscribe send an email to python-checkins-leave@python.org
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: list-python-checkins@lists.gossamer-threads.com