Rspamd: [BUG] fuzzy_generate_commands: Program terminated with signal 11, Segmentation fault

Created on 19 Jul 2019  路  7Comments  路  Source: rspamd/rspamd

Hello,

A segmentation fault occurs on click "Symbols" in Web-UI.

  • CentOS 7: 3.10.0-957.21.3.el7.x86_64
  • rspamd-debuginfo-2.0-18.gitdf5d064b0.x86_64
  • rspamd-2.0-18.gitdf5d064b0.x86_64
Program terminated with signal 11, Segmentation fault.
#0  fuzzy_generate_commands (task=task@entry=0x7f17829e1240, rule=rule@entry=0x7f17820ffc88, c=c@entry=3, flag=flag@entry=0, value=value@entry=0, flags=flags@entry=0)
    at /usr/src/debug/rspamd-2.0/src/plugins/fuzzy_check.c:2674
2674            res = g_ptr_array_sized_new (MESSAGE_FIELD (task, parts)->len + 1);
Missing separate debuginfos, use: debuginfo-install openblas-serial-0.3.3-2.el7.x86_64
(gdb) bt full
#0  fuzzy_generate_commands (task=task@entry=0x7f17829e1240, rule=rule@entry=0x7f17820ffc88, c=c@entry=3, flag=flag@entry=0, value=value@entry=0, flags=flags@entry=0)
    at /usr/src/debug/rspamd-2.0/src/plugins/fuzzy_check.c:2674
        part = <optimized out>
        mime_part = <optimized out>
        image = <optimized out>
        io = <optimized out>
        cur = <optimized out>
        i = <optimized out>
        j = <optimized out>
        res = <optimized out>
        check_part = <optimized out>
        fuzzy_check = <optimized out>
#1  0x00007f178b84c3ab in fuzzy_stat_command (task=task@entry=0x7f17829e1240) at /usr/src/debug/rspamd-2.0/src/plugins/fuzzy_check.c:2866
        rule = 0x7f17820ffc88
        i = 0
        commands = <optimized out>
        fuzzy_module_ctx = 0x7f17820dc170
#2  0x00000000004103b8 in rspamd_controller_handle_stat_common (conn_ent=<optimized out>, do_reset=0, msg=<optimized out>) at /usr/src/debug/rspamd-2.0/src/controller.c:2688
        session = 0x7f1779561120
        top = <optimized out>
        i = <optimized out>
        spam = <optimized out>
        ham = <optimized out>
        mem_st = {pools_allocated = 136, pools_freed = 110, bytes_allocated = 19702280, chunks_allocated = 121, shared_chunks_allocated = 17, chunks_freed = 0, oversized_chunks = 2,
          fragmented_size = 0}
        stat = 0x7ffc32ea1b20
        stat_copy = {messages_scanned = 11554, actions_stat = {979, 0, 274, 2439, 5918, 1944}, connections_count = 13, control_connections_count = 97, messages_learned = 34}
        ctx = <optimized out>
        task = <optimized out>
        cbdata = <optimized out>
#3  0x00007f178b7633b9 in rspamd_http_router_finish_handler (conn=<optimized out>, msg=0x7f1779824b60) at /usr/src/debug/rspamd-2.0/src/libutil/http_router.c:334
        entry = 0x7f177b1cc4e0
        handler = 0x410590 <rspamd_controller_handle_stat>
        found = <optimized out>
        err = <optimized out>
        lookup = {len = 5, begin = 0x7f1779887390 "/statt: */*\r\n"}
        encoding = <optimized out>
        u = {field_set = 8, port = 0, field_data = {{off = 0, len = 32768}, {off = 10240, len = 22320}, {off = 39309, len = 53326}, {off = 0, len = 5}, {off = 0, len = 0}, {off = 11648,
              len = 33443}, {off = 32535, len = 0}}}
        i = <optimized out>
        re = <optimized out>
        router = 0x7f17799d0860
        __func__ = "rspamd_http_router_finish_handler"
#4  0x00007f178b7611bd in rspamd_http_on_message_complete (parser=<optimized out>) at /usr/src/debug/rspamd-2.0/src/libutil/http_connection.c:692
        conn = 0x7f1779561350
        priv = 0x7f1782a32d80
        ret = <optimized out>
        mode = <optimized out>
        __func__ = "rspamd_http_on_message_complete"
---Type <return> to continue, or q <return> to quit---
#5  0x00007f178b85ba70 in http_parser_execute (parser=parser@entry=0x7f1782a32db8, settings=settings@entry=0x7f1782a32dd8,
    data=0x7f1779a23810 "GET /stat HTTP/1.1\r\nHost: 127.0.0.1:11334\r\nUser-Agent: DirectAdmin / 1.57.4\r\nAccept: */*\r\nAccept-Encoding: deflate, gzip\r\nReferer: https://gold2.poralix.net:2222/CMD_PLUGINS_ADMIN/rspamd/\r\nX-Forwarded"..., len=len@entry=219) at /usr/src/debug/rspamd-2.0/contrib/http-parser/http_parser.c:1717
        c = <optimized out>
        ch = 10 '\n'
        unhex_val = <optimized out>
        p = <optimized out>
        header_field_mark = <optimized out>
        header_value_mark = 0x0
        url_mark = <optimized out>
        body_mark = 0x0
        status_mark = <optimized out>
        __PRETTY_FUNCTION__ = "http_parser_execute"
#6  0x00007f178b761de6 in rspamd_http_event_handler (fd=<optimized out>, what=<optimized out>, ud=0x7f1779561350) at /usr/src/debug/rspamd-2.0/src/libutil/http_connection.c:933
        conn = 0x7f1779561350
        priv = 0x7f1782a32d80
        pbuf = 0x7f177b1cc750
        d = 0x7f1779a23810 "GET /stat HTTP/1.1\r\nHost: 127.0.0.1:11334\r\nUser-Agent: DirectAdmin / 1.57.4\r\nAccept: */*\r\nAccept-Encoding: deflate, gzip\r\nReferer: https://gold2.poralix.net:2222/CMD_PLUGINS_ADMIN/rspamd/\r\nX-Forwarded"...
        r = 219
        err = <optimized out>
        __func__ = "rspamd_http_event_handler"
#7  0x00007f1787555ac6 in ev_invoke_pending (loop=0x7f177954ff00) at /usr/src/debug/rspamd-2.0/contrib/libev/ev.c:3340
        p = <optimized out>
#8  0x00007f17875590cf in ev_run (loop=0x7f177954ff00, flags=flags@entry=0) at /usr/src/debug/rspamd-2.0/contrib/libev/ev.c:3744
        flags = 0
        loop = 0x7f177954ff00
#9  0x00000000004114b9 in ev_loop (flags=0, loop=<optimized out>) at /usr/src/debug/rspamd-2.0/contrib/libev/ev.h:820
No locals.
#10 start_controller_worker (worker=0x7f1779904200) at /usr/src/debug/rspamd-2.0/src/controller.c:3925
        ctx = 0x7f1781955858
        mctx = <optimized out>
        iter = {dummy1 = 0x7f1782af5520, dummy2 = 0x39ce2d5b80fbce14, dummy3 = 0xc0a430370ad8e95e, dummy4 = 8, dummy5 = -1187650737, dummy6 = 0xb000000000000003}
        key = 0x7f178c063e1c
        value = 0x7f1779830c68
        i = <optimized out>
        m = <optimized out>
        __func__ = "start_controller_worker"
        http_ctx = <optimized out>
#11 0x00007f178b7d0dcb in rspamd_fork_worker (rspamd_main=rspamd_main@entry=0x7f1782982000, cf=cf@entry=0x7f1782a60380, index=index@entry=0,
    ev_base=ev_base@entry=0x7f178775e9c0 <default_loop_struct>, term_handler=term_handler@entry=0x416290 <rspamd_cld_handler>) at /usr/src/debug/rspamd-2.0/src/libserver/worker_util.c:803
        wrk = 0x7f1779904200
        rc = <optimized out>
        rlim = {rlim_cur = 104857600, rlim_max = 104857600}
        __func__ = "rspamd_fork_worker"
#12 0x00000000004161f6 in spawn_worker_type (rspamd_main=rspamd_main@entry=0x7f1782982000, event_loop=event_loop@entry=0x7f178775e9c0 <default_loop_struct>, cf=cf@entry=0x7f1782a60380)
    at /usr/src/debug/rspamd-2.0/src/rspamd.c:542
        i = 0
        __func__ = "spawn_worker_type"
---Type <return> to continue, or q <return> to quit---
#13 0x0000000000416abf in spawn_workers (rspamd_main=rspamd_main@entry=0x7f1782982000, ev_base=ev_base@entry=0x7f178775e9c0 <default_loop_struct>)
    at /usr/src/debug/rspamd-2.0/src/rspamd.c:636
        cur = <optimized out>
        ls = <optimized out>
        cf = <optimized out>
        p = <optimized out>
        bcf = <optimized out>
        listen_ok = <optimized out>
        seen_mandatory_workers = 0x7f177ae77ea0
        cw = <optimized out>
        wrk = <optimized out>
        i = <optimized out>
        __func__ = "spawn_workers"
#14 0x000000000040b624 in main (argc=<optimized out>, argv=<optimized out>, env=<optimized out>) at /usr/src/debug/rspamd-2.0/src/rspamd.c:1369
        i = <optimized out>
        signals = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer = 0x0}
        sigpipe_act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {4096, 0 <repeats 15 times>}}, sa_flags = 0, sa_restorer = 0x3}
        pworker = <optimized out>
        type = <optimized out>
        control_addr = 0x7f1779943780
        event_loop = 0x7f178775e9c0 <default_loop_struct>
        rspamd_main = 0x7f1782982000
        skip_pid = 1
        __func__ = "main"
(gdb)

Please advise.

Regards,
Alex.

bug

All 7 comments

Thank you for report, it should be fixed now (new packages built has been started).

Seems to be fixed.

It seems I was too fast. Another crash has occurred:

  • rspamd-debuginfo-2.0-19.git06a167bbf.x86_64
  • rspamd-2.0-19.git06a167bbf.x86_64 (-rwxr-xr-x 1 root root 165264 Jul 19 20:23 /bin/rspamd)
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `rspamd: controller process (localhost:11334) '.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f5e3e181132 in fuzzy_insert_metric_results (results=0x7f5e2c467b20, task=0x7f5e3531a240) at /usr/src/debug/rspamd-2.0/src/plugins/fuzzy_check.c:2132
2132            PTR_ARRAY_FOREACH (results, i, res) {
(gdb) bt full
#0  0x00007f5e3e181132 in fuzzy_insert_metric_results (results=0x7f5e2c467b20, task=0x7f5e3531a240) at /usr/src/debug/rspamd-2.0/src/plugins/fuzzy_check.c:2132
        i = 0
        seen_text_hash = 0
        seen_text = 0
        seen_long_text = 0
        prob_txt = 0
        mult = <optimized out>
        tp = <optimized out>
        res = <optimized out>
        seen_img_hash = 0
#1  fuzzy_check_session_is_completed (session=0x7f5e2c814248) at /usr/src/debug/rspamd-2.0/src/plugins/fuzzy_check.c:2211
        io = <optimized out>
        nreplied = <optimized out>
        i = <optimized out>
        session = 0x7f5e2c814248
        io = <optimized out>
        nreplied = <optimized out>
        i = <optimized out>
#2  0x00007f5e3e1832bd in fuzzy_check_io_callback (fd=<optimized out>, what=<optimized out>, arg=0x7f5e2c814248) at /usr/src/debug/rspamd-2.0/src/plugins/fuzzy_check.c:2330
        session = 0x7f5e2c814248
        task = 0x7f5e3531a240
        r = <optimized out>
        ret = return_error
        __func__ = "fuzzy_check_io_callback"
#3  0x00007f5e39e8eac6 in ev_invoke_pending (loop=0x7f5e2c488f00) at /usr/src/debug/rspamd-2.0/contrib/libev/ev.c:3340
        p = <optimized out>
#4  0x00007f5e39e920cf in ev_run (loop=0x7f5e2c488f00, flags=flags@entry=0) at /usr/src/debug/rspamd-2.0/contrib/libev/ev.c:3744
        flags = 0
        loop = 0x7f5e2c488f00
#5  0x00000000004114b9 in ev_loop (flags=0, loop=<optimized out>) at /usr/src/debug/rspamd-2.0/contrib/libev/ev.h:820
No locals.
#6  start_controller_worker (worker=0x7f5e2c7d5200) at /usr/src/debug/rspamd-2.0/src/controller.c:3925
        ctx = 0x7f5e3428e798
        mctx = <optimized out>
        iter = {dummy1 = 0x7f5e3542e520, dummy2 = 0xb1ff85adcfce9ec0, dummy3 = 0x315216c084a16eaa, dummy4 = 8, dummy5 = 2117147501, dummy6 = 0xb000000000000003}
        key = 0x7f5e3e99d11c
        value = 0x7f5e2c769c68
        i = <optimized out>
        m = <optimized out>
        __func__ = "start_controller_worker"
        http_ctx = <optimized out>
#7  0x00007f5e3e10a01b in rspamd_fork_worker (rspamd_main=rspamd_main@entry=0x7f5e352bb000, cf=cf@entry=0x7f5e35399380, index=index@entry=0,
    ev_base=ev_base@entry=0x7f5e3a0979c0 <default_loop_struct>, term_handler=term_handler@entry=0x416290 <rspamd_cld_handler>) at /usr/src/debug/rspamd-2.0/src/libserver/worker_util.c:803
        wrk = 0x7f5e2c7d5200
        rc = <optimized out>
        rlim = {rlim_cur = 104857600, rlim_max = 104857600}
        __func__ = "rspamd_fork_worker"
#8  0x00000000004161f6 in spawn_worker_type (rspamd_main=rspamd_main@entry=0x7f5e352bb000, event_loop=event_loop@entry=0x7f5e3a0979c0 <default_loop_struct>, cf=cf@entry=0x7f5e35399380)
    at /usr/src/debug/rspamd-2.0/src/rspamd.c:542
---Type <return> to continue, or q <return> to quit---
        i = 0
        __func__ = "spawn_worker_type"
#9  0x0000000000416abf in spawn_workers (rspamd_main=rspamd_main@entry=0x7f5e352bb000, ev_base=ev_base@entry=0x7f5e3a0979c0 <default_loop_struct>)
    at /usr/src/debug/rspamd-2.0/src/rspamd.c:636
        cur = <optimized out>
        ls = <optimized out>
        cf = <optimized out>
        p = <optimized out>
        bcf = <optimized out>
        listen_ok = <optimized out>
        seen_mandatory_workers = 0x7f5e2d7b0ea0
        cw = <optimized out>
        wrk = <optimized out>
        i = <optimized out>
        __func__ = "spawn_workers"
#10 0x000000000040b624 in main (argc=<optimized out>, argv=<optimized out>, env=<optimized out>) at /usr/src/debug/rspamd-2.0/src/rspamd.c:1369
        i = <optimized out>
        signals = {__sigaction_handler = {sa_handler = 0x0, sa_sigaction = 0x0}, sa_mask = {__val = {0 <repeats 16 times>}}, sa_flags = 0, sa_restorer = 0x0}
        sigpipe_act = {__sigaction_handler = {sa_handler = 0x1, sa_sigaction = 0x1}, sa_mask = {__val = {4096, 0 <repeats 15 times>}}, sa_flags = 0, sa_restorer = 0x3}
        pworker = <optimized out>
        type = <optimized out>
        control_addr = 0x7f5e2c87c780
        event_loop = 0x7f5e3a0979c0 <default_loop_struct>
        rspamd_main = 0x7f5e352bb000
        skip_pid = 1
        __func__ = "main"
(gdb)

That's a completely different issue. When does it happen?

While browsing Web-UI, I believe occured on click "Symbols"

Is it fixed now?

Yes, it seems to be fixed. Running rspamd-2.0-21.gita30f3afa4.x86_64 without any issue. Thanks.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Natureshadow picture Natureshadow  路  8Comments

ashceryth picture ashceryth  路  7Comments

mpizzoli picture mpizzoli  路  3Comments

andris9 picture andris9  路  5Comments

stephdl picture stephdl  路  3Comments