Skip to content

Move to versioned symbols requires a soname bump #832

@MatthewVernon

Description

@MatthewVernon

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    questionQuestion from a user

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions