AC_MSG_CHECKING([whether setjmp() saves the signal mask])
@@ -84,6 +87,9 @@ AC_RUN_IFELSE([AC_LANG_PROGRAM(
,
dnl NO
[AC_MSG_RESULT([no])]
,
dnl NO, cross compiling.
[AC_MSG_RESULT([no])]
)
AC_MSG_CHECKING([for GNU libc])
@@ -132,6 +138,9 @@ AC_RUN_IFELSE([AC_LANG_SOURCE(
,
dnl NO
[AC_MSG_RESULT([no])]
,
dnl NO, cross compiling.
[AC_MSG_RESULT([no])]
)
dnl Check for atomic operations
a patch to ignore some additional output that happens in qemu builds:
--- a/src/cysignals/tests.pyx
+++ b/src/cysignals/tests.pyx
@@ -613,7 +613,7 @@ def unguarded_dereference_null_pointer():
This probably occurred because a *compiled* module has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Python will now terminate.
...
The same but with CYSIGNALS_CRASH_QUIET set. This will crash
Python silently::
@@ -656,7 +656,7 @@ def unguarded_abort():
This probably occurred because a compiled module has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Python will now terminate.
...
"""
with nogil:
@@ -691,7 +691,7 @@ def unguarded_stack_overflow():
This probably occurred because a compiled module has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Python will now terminate.
...
"""
with nogil:
@@ -734,7 +734,7 @@ def test_bad_str(long delay=DEFAULT_DELAY):
This probably occurred because a compiled module has a bug
in it and is not properly wrapped with sig_on(), sig_off().
Python will now terminate.
...
"""
cdef char s = <char>(16)
diff --git a/src/cysignals/tests.pyx b/src/cysignals/tests.pyx
index 0673ffa..6a8156d 100644
--- a/src/cysignals/tests.pyx
+++ b/src/cysignals/tests.pyx
@@ -615,14 +615,6 @@ def unguarded_dereference_null_pointer():
Python will now terminate.
The same but with CYSIGNALS_CRASH_QUIET set. This will crash
This doctest of PSelecter fails on aarch64 (at least when running with qemu:)
Namely, this throws an
AlarmInterrupt
, I guess before the try block.The verbose output from a CI run is:
The full CI run is here.
This is from a mildly patched cysignals 1.11.0, for packaging for conda-forge, see https://github.com/conda-forge/cysignals-feedstock/pull/35.
The patches applied were:
diff --git a/configure.ac b/configure.ac index 2910f9b..07f81a0 100644 --- a/configure.ac +++ b/configure.ac @@ -55,6 +55,9 @@ AC_RUN_IFELSE([AC_LANG_PROGRAM([[]], [[asm("leal (%eax), %eax; emms");]])], , dnl NO [AC_MSG_RESULT([no])]
,
dnl NO, cross compiling.
[AC_MSG_RESULT([no])] )
AC_MSG_CHECKING([whether setjmp() saves the signal mask]) @@ -84,6 +87,9 @@ AC_RUN_IFELSE([AC_LANG_PROGRAM( , dnl NO [AC_MSG_RESULT([no])]
,
dnl NO, cross compiling.
[AC_MSG_RESULT([no])] )
AC_MSG_CHECKING([for GNU libc]) @@ -132,6 +138,9 @@ AC_RUN_IFELSE([AC_LANG_SOURCE( , dnl NO [AC_MSG_RESULT([no])]
,
dnl NO, cross compiling.
[AC_MSG_RESULT([no])] )
dnl Check for atomic operations
a patch to ignore some additional output that happens in qemu builds:
...
The same but with
CYSIGNALS_CRASH_QUIET
set. This will crash Python silently:: @@ -656,7 +656,7 @@ def unguarded_abort(): This probably occurred because a compiled module has a bug in it and is not properly wrapped with sig_on(), sig_off(). Python will now terminate....
""" with nogil: @@ -691,7 +691,7 @@ def unguarded_stack_overflow(): This probably occurred because a compiled module has a bug in it and is not properly wrapped with sig_on(), sig_off(). Python will now terminate.
...
""" with nogil: @@ -734,7 +734,7 @@ def test_bad_str(long delay=DEFAULT_DELAY): This probably occurred because a compiled module has a bug in it and is not properly wrapped with sig_on(), sig_off(). Python will now terminate.
...
""" cdef char s = <char>(16) diff --git a/src/cysignals/tests.pyx b/src/cysignals/tests.pyx index 0673ffa..6a8156d 100644 --- a/src/cysignals/tests.pyx +++ b/src/cysignals/tests.pyx @@ -615,14 +615,6 @@ def unguarded_dereference_null_pointer(): Python will now terminate.
The same but with
CYSIGNALS_CRASH_QUIET
set. This will crashPython silently::
""" with nogil: dereference_null_pointer()
a patch to produce more verbose output when testing
failures, _ = doctest.testfile(file, module_relative=False,
failures, _ = doctest.testfile(file, module_relative=False, verbose=True, optionflags=flags, parser=parser) if not failures:
print(f"Test {file} passed.") os._exit(0) except BaseException as E:
print(E)
print(f"Test {file} failed with a {type(E)} error: {E}") finally:
print(f"Test {file} failed.") os._exit(23)