Package: rspamd Version: 1.9.4-2+b1 Severity: normal Dear Maintainer, rspamadm segfaults with pcre2 10.34. This can be seen in the ci tests[1], for which rspamd has a bad-test[2] (?), and manually:
root@sid-rspamd:~# dpkg -l|grep pcre ii libpcre2-8-0:amd64 10.34-3+b1 amd64 New Perl Compatible Regular Expression Library- 8 bit runtime files ii libpcre3:amd64 2:8.39-12+b1 amd64 Old Perl 5 Compatible Regular Expression Library - runtime files root@sid-rspamd:~# dpkg -l|grep rspam ii rspamd 1.9.4-2+b1 amd64 Rapid spam filtering system root@sid-rspamd:~# rspamadm configtest Segmentation fault (core dumped) This also happens in Ubuntu, where there are no bad-test hints and where rspamd is stuck in migration. In Ubuntu, if I try with pcre2 10.32-5, it works. The full backtrace is as follows: Starting program: /usr/bin/rspamadm configtest [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Program received signal SIGSEGV, Segmentation fault. 0x00007ffff6f85714 in pcre2_jit_compile_8 (code=0x0, options=options@entry=1) at src/pcre2_jit_compile.c:13746 13746 src/pcre2_jit_compile.c: No such file or directory. #0 0x00007ffff6f85714 in pcre2_jit_compile_8 (code=0x0, options=options@entry=1) at src/pcre2_jit_compile.c:13746 re = 0x0 functions = <optimized out> executable_allocator_is_working = 1 #1 0x00007ffff7aa1543 in rspamd_regexp_post_process (r=0x7ffff196af80) at ./src/libutil/regexp.c:190 jsz = 658 jit_flags = 1 jsz = <optimized out> jit_flags = <optimized out> __func__ = "rspamd_regexp_post_process" #2 rspamd_regexp_new (pattern=0x7ffff3b7e6c9 "[$€$¢¥₽]", flags=0x7ffff47e3600 "u", err=err@entry=0x7fffffffe940) at ./src/libutil/regexp.c:481 start = <optimized out> end = <optimized out> flags_str = <optimized out> err_str = <optimized out> res = 0x7ffff196af80 explicit_utf = 1 r = 0x7ffff196aec0 sep = <optimized out> real_pattern = <optimized out> err_off = 0 regexp_flags = 524288 rspamd_flags = <optimized out> err_code = 100 ncaptures = 658 strict_flags = <optimized out> __func__ = "rspamd_regexp_new" #3 0x00007ffff7b4b61d in rspamd_mime_expr_parse_regexp_atom (cfg=<optimized out>, line=0x7ffff3b7e670 "/[$€$¢¥₽]/Hu", pool=0x7ffff4632000) at ./src/libmime/mime_expressions.c:494 end = <optimized out> p = <optimized out> err = 0x0 re_flags = 0x7ffff47f1400 begin = 0x7ffff3b7e671 "[$€$¢¥₽]/Hu" src = 0x7ffff3b7e668 "Subject=/[$€$¢¥₽]/Hu" dbegin = <optimized out> start = <optimized out> brace = <optimized out> dend = 0x7ffff3b7e6d7 "" extra = 0x7ffff3b7e6b8 "Subject" result = 0x7ffff3b7e688 begin = <optimized out> end = <optimized out> p = <optimized out> src = <optimized out> start = <optimized out> brace = <optimized out> dbegin = <optimized out> dend = <optimized out> extra = <optimized out> result = <optimized out> err = <optimized out> re_flags = <optimized out> __func__ = "rspamd_mime_expr_parse_regexp_atom" #4 rspamd_mime_expr_parse (line=<optimized out>, len=<optimized out>, pool=0x7ffff4632000, ud=<optimized out>, err=0x7fffffffea60) at ./src/libmime/mime_expressions.c:799 a = 0x0 mime_atom = 0x7ffff3b7e650 p = <optimized out> end = <optimized out> c = <optimized out> real_ud = <optimized out> cfg = <optimized out> own_re = <optimized out> t = <optimized out> type = <optimized out> obraces = <optimized out> ebraces = <optimized out> state = <optimized out> prev_state = <optimized out> __func__ = "rspamd_mime_expr_parse" #5 0x00007ffff7a86378 in rspamd_parse_expression (line=line@entry=0x7ffff4749480 "Subject=/[$€$¢¥₽]/Hu", len=<optimized out>, len@entry=0, subr=0x7ffff7d699e0 <mime_expr_subr>, subr_data=subr_data@entry=0x7fffffffeaf0, pool=pool@entry=0x7ffff4632000, err=err@entry=0x7fffffffea60, target=0x7fffffffea58) at ./src/libutil/expression.c:671 e = 0x7ffff47611d0 elt = {type = ELT_OP, p = {atom = 0x0, op = OP_INVALID, lim = 0}, flags = 0, priority = 0, value = 0} atom = <optimized out> num_re = 0x7ffff4645fc0 op = <optimized out> op_stack = <optimized out> p = <optimized out> c = <optimized out> end = <optimized out> operand_stack = 0x7ffff47f4e60 tmp = <optimized out> state = <optimized out> __func__ = "rspamd_parse_expression" #6 0x00007ffff7b6842c in read_regexp_expression (pool=0x7ffff4632000, symbol=0x7ffff4749460 "SUBJECT_HAS_CURRENCY", line=line@entry=0x7ffff4749480 "Subject=/[$€$¢¥₽]/Hu", ud=ud@entry=0x7fffffffeaf0, chain=<optimized out>) at ./src/plugins/regexp.c:81 e = 0x0 err = 0x0 __func__ = "read_regexp_expression" #7 0x00007ffff7b68e8f in regexp_module_config (cfg=0x7ffff4626800) at ./src/plugins/regexp.c:228 group = 0x0 flags = 0 priority = 0 description = 0x0 score = 0 is_lua = 0 valid_expression = 1 ud = {cfg = 0x7ffff4626800, conf_obj = 0x7ffff467c780} regexp_module_ctx = 0x7ffff3b75f40 cur_item = 0x7ffff3b7e630 sec = 0x7ffff47370c0 value = 0x7ffff467c780 elt = <optimized out> it = 0x7ffff4625e00 res = 1 id = <optimized out> nre = 27 nlua = 0 nshots = 1 __func__ = "regexp_module_config" #8 0x00007ffff7af0ceb in rspamd_init_filters (cfg=0x7ffff4626800, reconfig=reconfig@entry=false) at ./src/libserver/cfg_utils.c:1539 cur = 0x7ffff463f000 mod = 0x7ffff7d93460 <regexp_module> pmod = <optimized out> i = <optimized out> mod_ctx = 0x7ffff3b75f40 cur_ctx = <optimized out> ret = 1 __func__ = "rspamd_init_filters" #9 0x00005555555662f7 in rspamadm_configtest (argc=<optimized out>, argv=<optimized out>, cmd=<optimized out>) at ./src/rspamadm/configtest.c:155 context = <optimized out> error = 0x0 confdir = <optimized out> cfg = 0x7ffff4626800 ret = 1 pworker = <optimized out> log_cnt = <optimized out> #10 0x0000555555564825 in main (argc=2, argv=<optimized out>, env=<optimized out>) at ./src/rspamadm/rspamadm.c:561 error = 0x0 context = <optimized out> og = <optimized out> cfg = <optimized out> process_quark = <optimized out> nargv = 0x7ffff462f460 targv = 0x7ffff462f460 cmd_name = <optimized out> cmd = 0x55555558e4e0 <configtest_command> resolver = <optimized out> all_commands = <optimized out> i = <optimized out> nargc = <optimized out> targc = 1 pworker = <optimized out> ev_cfg = 0x7ffff4630f00 I filed this bug against pcre2 upstream, since the crash happens inside that library: https://bugs.exim.org/show_bug.cgi?id=2487 I didn't file a bug against rspamd upstream yet, as we both are on an older version (1.9.4 vs 2.2). 1. https://ci.debian.net/data/autopkgtest/unstable/amd64/r/rspamd/3566843/log.gz 2. https://tracker.debian.org/pkg/pcre2: autopkgtest for rspamd/1.9.4-2: amd64: Ignored failure, arm64: Ignored failure