PCRE2Project / pcre2

PCRE2 development is now based here.
Other
913 stars 191 forks source link

10.44 test failures on armel #565

Closed MatthewVernon closed 1 hour ago

MatthewVernon commented 2 hours ago

I've uploaded 10.44 to Debian, and backported #418 so that it builds OK on the 32-bit platforms.

There are, though, two test failures remaining on armel (on which 10.42 built without issue), taking an extract from the build log:

FAIL: pcre2_jit_test
====================

Running JIT regression tests
  target CPU of SLJIT compiler: ARMv6 32bit (little endian + aligned) ABI:softfp
  in  8 bit mode with UTF-8  enabled:
  in 16 bit mode with UTF-16 enabled:
  in 32 bit mode with UTF-32 enabled:
....................................FAIL pcre2_jit_test (exit status: 139)

and

FAIL: RunTest
=============

PCRE2 C library tests using test data from ./testdata
PCRE2 version 10.44 2024-06-07 (8-bit)

---- Testing 8-bit library ----

Test 0: Unchecked pcre2test argument tests (to improve coverage)
  OK
Test 1: Main non-UTF, non-UCP functionality (compatible with Perl >= 5.10)
  OK
Segmentation fault
** pcre2test failed - check testtry

The Debian bug report is https://bugs.debian.org/1087563 (and has speculation that it might possibly be relevant that ARMv6 is actually higher than the baseline for the armel architecture, which is meant to run successfully on armv5te as per https://wiki.debian.org/ArchitectureSpecificsMemo ).

This will block 10.44 from moving into the next Debian release.

MatthewVernon commented 2 hours ago

FTR, the build fails identically on 10.44 without #418 applied.

zherczeg commented 1 hour ago

ARMv5 support is dropped from the jit compiler, and ARMv6 is the minimum now. Even that is 15 year old hw now.

NWilson commented 1 hour ago

I was thinking last week in fact that we should have a CI build with an ARM cross-compiler and run the tests with qemu.

MatthewVernon commented 1 hour ago

ARMv5 support is dropped from the jit compiler, and ARMv6 is the minimum now. Even that is 15 year old hw now.

OK, thanks, I'll pull armel from the set of architectures we compile the JIT on for Debian.

zherczeg commented 56 minutes ago

The uraimo containers can be used to run code on other CPU without explicit qemu commands:

Sljit example: https://github.com/zherczeg/sljit/blob/master/.github/workflows/actions.yml#L54

Walrus (a WebAssembly runtime with sljit) example: https://github.com/Samsung/walrus/blob/main/.github/workflows/actions.yml#L185