[Python-checkins] gh-90473: Increase stack size, disable obmalloc on WASI (GH-92732)

tiran webhook-mailer at python.org
Fri May 13 02:36:10 EDT 2022


https://github.com/python/cpython/commit/d81d57e9598dea741e049f3876ccd87072a38906
commit: d81d57e9598dea741e049f3876ccd87072a38906
branch: main
author: Christian Heimes <christian at python.org>
committer: tiran <christian at python.org>
date: 2022-05-13T08:36:01+02:00
summary:

gh-90473: Increase stack size, disable obmalloc on WASI (GH-92732)

files:
A Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst
M Lib/test/support/os_helper.py
M Lib/test/test_builtin.py
M configure
M configure.ac

diff --git a/Lib/test/support/os_helper.py b/Lib/test/support/os_helper.py
index eee37ef0d5a71..ed4ec15c7cbe9 100644
--- a/Lib/test/support/os_helper.py
+++ b/Lib/test/support/os_helper.py
@@ -50,7 +50,7 @@
                   % (TESTFN_UNENCODABLE, sys.getfilesystemencoding()))
             TESTFN_UNENCODABLE = None
 # macOS and Emscripten deny unencodable filenames (invalid utf-8)
-elif sys.platform not in {'darwin', 'emscripten'}:
+elif sys.platform not in {'darwin', 'emscripten', 'wasi'}:
     try:
         # ascii and utf-8 cannot encode the byte 0xff
         b'\xff'.decode(sys.getfilesystemencoding())
diff --git a/Lib/test/test_builtin.py b/Lib/test/test_builtin.py
index ba7a7e20d7dcd..efa9459a58629 100644
--- a/Lib/test/test_builtin.py
+++ b/Lib/test/test_builtin.py
@@ -393,7 +393,10 @@ def test_compile_top_level_await_no_coro(self):
                                 msg=f"source={source} mode={mode}")
 
 
-    @unittest.skipIf(support.is_emscripten, "socket.accept is broken")
+    @unittest.skipIf(
+        support.is_emscripten or support.is_wasi,
+        "socket.accept is broken"
+    )
     def test_compile_top_level_await(self):
         """Test whether code some top level await can be compiled.
 
diff --git a/Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst b/Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst
new file mode 100644
index 0000000000000..29ce3de1f2134
--- /dev/null
+++ b/Misc/NEWS.d/next/Build/2022-05-12-10-19-15.gh-issue-90473.-syvqK.rst
@@ -0,0 +1 @@
+Disable pymalloc and increase stack size on ``wasm32-wasi``.
diff --git a/configure b/configure
index 010ad320582c5..02810880e914f 100755
--- a/configure
+++ b/configure
@@ -7922,6 +7922,8 @@ $as_echo "#define _WASI_EMULATED_PROCESS_CLOCKS 1" >>confdefs.h
     LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks"
     echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h
 
+            as_fn_append LDFLAGS_NODIST " -z stack-size=524288 -Wl,--stack-first -Wl,--initial-memory=10485760"
+
  ;; #(
   *) :
      ;;
@@ -14231,19 +14233,26 @@ int domain = AF_INET6;
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
   ipv6=yes
 
 else
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
   ipv6=no
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
 
+case $ac_sys_system in #(
+  WASI) :
+    ipv6=no
+ ;; #(
+  *) :
+     ;;
+esac
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ipv6" >&5
+$as_echo "$ipv6" >&6; }
+
 if test "$ipv6" = "yes"; then
 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if RFC2553 API is available" >&5
 $as_echo_n "checking if RFC2553 API is available... " >&6; }
@@ -14557,6 +14566,8 @@ then
     case $ac_sys_system in #(
   Emscripten) :
     with_pymalloc="no" ;; #(
+  WASI) :
+    with_pymalloc="no" ;; #(
   *) :
     with_pymalloc="yes"
    ;;
@@ -22597,6 +22608,12 @@ case $ac_sys_system in #(
      ;; #(
   WASI/*) :
 
+
+
+    py_cv_module__ctypes_test=n/a
+    py_cv_module_=n/a
+
+
      ;; #(
   *) :
      ;;
diff --git a/configure.ac b/configure.ac
index 65b96976031ac..eab326232b14d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1994,6 +1994,10 @@ AS_CASE([$ac_sys_system],
     AC_DEFINE([_WASI_EMULATED_PROCESS_CLOCKS], [1], [Define to 1 if you want to emulate process clocks on WASI])
     LIBS="$LIBS -lwasi-emulated-signal -lwasi-emulated-getpid -lwasi-emulated-process-clocks"
     echo "#define _WASI_EMULATED_SIGNAL 1" >> confdefs.h
+
+    dnl increase initial memory and stack size, move 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"])
   ]
 )
 
@@ -4046,13 +4050,17 @@ dnl the check does not work on cross compilation case...
 #include <sys/types.h>
 #include <sys/socket.h>]],
 [[int domain = AF_INET6;]])],[
-  AC_MSG_RESULT(yes)
   ipv6=yes
 ],[
-  AC_MSG_RESULT(no)
   ipv6=no
 ])
 
+AS_CASE([$ac_sys_system],
+  [WASI], [ipv6=no]
+)
+
+AC_MSG_RESULT([$ipv6])
+
 if test "$ipv6" = "yes"; then
 	AC_MSG_CHECKING(if RFC2553 API is available)
 	AC_COMPILE_IFELSE([
@@ -4232,9 +4240,10 @@ AC_ARG_WITH(pymalloc,
 
 if test -z "$with_pymalloc"
 then
-  dnl default to yes except for wasm32-emscripten
+  dnl default to yes except for wasm32-emscripten and wasm32-wasi.
   AS_CASE([$ac_sys_system],
     [Emscripten], [with_pymalloc="no"],
+    [WASI], [with_pymalloc="no"],
     [with_pymalloc="yes"]
   )
 fi
@@ -6680,7 +6689,11 @@ AS_CASE([$ac_sys_system],
         )
       ],
       [Emscripten/node*], [],
-      [WASI/*], []
+      [WASI/*], [
+        PY_STDLIB_MOD_SET_NA(
+          [_ctypes_test],
+        )
+      ]
     )
   ],
   [PY_STDLIB_MOD_SET_NA([_scproxy])]



More information about the Python-checkins mailing list