-
Notifications
You must be signed in to change notification settings - Fork 242
Description
Hi,
The pcre2 10.47 release enables versioned symbols (by default). Unfortunately, this has the effect of changing almost all the symbols in the resulting library; and this requires a soname increment. Software built against 10.46 won't work with 10.47
I see this in Debian's CI if I run the glib2.0 tests: where the package was built against 10.46, but is running with 10.47 libraries installed. Signal 6 is SIGABRT
511s # FAIL: glib/regex.test (Child process killed by signal 6)
Equally, if I take pcre2test from 10.46, and run it with 10.47 libraries, it's obviously broken:
matthew@tsk:~/bin$ pcre2test
PCRE2 version 10.47 2025-10-21 (8-bit)
re> /[abc]*/
data> abcadbce
Start of matched string is beyond its end - displaying from end to start.
0: ERROR: bad value(s) for offset(s): 0x1 0xdeadbe00
whereas, with the 10.46 libraries, it behaves as expected:
PCRE2 version 10.46 2025-08-27 (8-bit)
re> /[abc]*/
data> abcadbce
0: abca
This was reported as Debian bug 1119027 which contains a diff of the symbols file (showing essentially every symbol replaced - e.g. pcre2_code_copy_8@Base is replaced by pcre2_code_copy_8@PCRE2_10.47).
I'd like not to get Debian and PCRE2 upstream out of sync regarding soname. So we could bump the soname now, and if there is another soname bump needed before 10.48, bump it again. Or I could disable versioned symbols in 10.47 in Debian (or you could decide that it's worth putting out 10.48 now with a soname bump since presumably Debian won't be the only people with this issue).
What do you think?