]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-117645: Increase WASI stack size from 512 KiB to 8 MiB (#117674)
authorVictor Stinner <vstinner@python.org>
Tue, 16 Apr 2024 21:26:54 +0000 (23:26 +0200)
committerGitHub <noreply@github.com>
Tue, 16 Apr 2024 21:26:54 +0000 (23:26 +0200)
Increase also the initial memory from 10 MiB to 20 MiB.

Reenable test_dynamic on WASI build.

Include/cpython/pystate.h
Lib/test/test_dynamic.py
Misc/NEWS.d/next/Build/2024-04-09-12-59-06.gh-issue-117645.0oEVAa.rst [new file with mode: 0644]
configure
configure.ac

index 7fb6b176392173380f3940bcd6963de0cdd3d123..6d5dba2bf3725b9b26f49c876e04c56455493ae3 100644 (file)
@@ -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
index 0cb56a98f1c12af095b291b292f5c37c97e96cf3..0aa3be6a1bde6ae6b050ee1daccb49d8bd663897 100644 (file)
@@ -4,7 +4,7 @@ import builtins
 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 @@ class RebindBuiltinsTests(unittest.TestCase):
 
         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 (file)
index 0000000..83df633
--- /dev/null
@@ -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.
index 80403255a814afd73c59440c6e5926ed91fcb97d..6782d470aadfff52b6ae299eafe4ba154ad06ec4 100755 (executable)
--- 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"
 
  ;; #(
   *) :
index ec925d4d4a0a5ac7d5d534f0a4313f0fd270b8cb..51a0d35dbc328e95bc571be86498c73c5794bbcf 100644 (file)
@@ -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"])
   ]
 )