https://github.com/python/cpython/commit/919784737c69e0f8e34d7d7a2e85b02628af6e66
commit: 919784737c69e0f8e34d7d7a2e85b02628af6e66
branch: main
author: Victor Stinner <[email protected]>
committer: vstinner <[email protected]>
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 -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-checkins.python.org/
Member address: [email protected]

Reply via email to