trusteddomainproject / OpenARC

Open source ARC implementation
BSD 2-Clause "Simplified" License
135 stars 45 forks source link

openarc process die #46

Closed andreasschulze closed 6 years ago

andreasschulze commented 7 years ago

on openarc.org the MX is configured to use only one milter: openarc. After update to today's version, the process die on any incoming message.

how to reproduce? send to echo@openarc.org. the answer don't show ARC related header at all I configured the milter "openarc_milter = { inet:[::1]:30068, default_action=accept }" so messages will not be deferred at all.

Unfortunately I can't get the process to write a core file. I set "ulimit -c unlimited" upon milter startup, configuration say "EnableCoredumps yes", "/proc/sys/kernel/core_pattern" contain "core", the process' working directory /is/ writeable.

But I get no core file :-/

andreasschulze commented 7 years ago

no matter wether any authentication header are present or not ...

juh commented 7 years ago

Can't repoduce it, works here.

juh commented 7 years ago

Try to run it in foreground and start it with gdb. After it fails, do a 'bt full'.

mdomsch commented 7 years ago

I'm seeing it fail (crashes on every incoming message) on EL6, with git HEAD:

commit 4dfdb5b9944a3da6b2c4ad7125496844942b7520 Author: Murray S. Kucherawy msk@trusteddomain.org Date: Wed Jul 19 02:15:31 2017 -0700

Use the hash algorithm specified in the header, not the configured one,
when verifying.

On Wed, Jul 19, 2017 at 8:04 AM, Juri Haberland notifications@github.com wrote:

Can't repoduce it, works here.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mskucherawy/OpenARC/issues/46#issuecomment-316379205, or mute the thread https://github.com/notifications/unsubscribe-auth/AAqDquqbUQw1X9uDhc7WcW46bO9agWvXks5sPf6pgaJpZM4Ocqu4 .

mdomsch commented 7 years ago

(gdb) run Starting program: /usr/sbin/openarc -c /etc/openarc.conf -f [Thread debugging using libthread_db enabled] [New Thread 0xb7ff1b70 (LWP 4369)] [New Thread 0xb75f0b70 (LWP 4370)] [New Thread 0xb6befb70 (LWP 4505)] [-1228997776] got cmd 'O' len 12 [-1228997776] cur 0 new 1 nextmask 2 [-1228997776] milter_negotiate: mta_actions=0x1ff, mta_flags=0x1fffff actions=0x1, flags=0x10070a [-1228997776] got cmd 'D' len 153 [-1228997776] cur 1 new ffffffff nextmask 2004 [-1228997776] got cmd 'C' len 57 [-1228997776] cur 1 new 2 nextmask 2004 [-1228997776] got cmd 'D' len 1 [-1228997776] cur 2 new ffffffff nextmask 2018 [-1228997776] got cmd 'D' len 329 [-1228997776] cur 2 new ffffffff nextmask 2018 [-1228997776] got cmd 'D' len 93 [-1228997776] cur 2 new ffffffff nextmask 2018 [-1228997776] got cmd 'M' len 31 [-1228997776] cur 2 new 4 nextmask 2018 [-1228997776] got cmd 'D' len 109 [-1228997776] cur 4 new ffffffff nextmask 3020 [-1228997776] got cmd 'L' len 68 [-1228997776] cur 4 new 7 nextmask 3020 [-1228997776] got cmd 'L' len 92 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 82 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 127 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 136 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 604 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 633 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 115 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 112 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 18 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 76 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 39 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 38 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 81 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 19 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 34 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'L' len 77 [-1228997776] cur 7 new 7 nextmask 1180 [-1228997776] got cmd 'N' len 0 [-1228997776] cur 7 new 8 nextmask 1180

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb6befb70 (LWP 4505)] 0x0013568d in arc_eoh (msg=0xb6001ab0) at arc.c:2415 2415 if (strcmp(arc_param_get(h->hdr_data, "a"), "rsa-sha1") == 0) Missing separate debuginfos, use: debuginfo-install krb5-libs-1.10.3-65.el6.i686 libcom_err-1.41.12-23.el6.i686 openssl-1.0.1e-57.el6.i686 (gdb) bt

0 0x0013568d in arc_eoh (msg=0xb6001ab0) at arc.c:2415

1 0x0804dc19 in mlfi_eoh (ctx=0x8079f18) at openarc.c:3087

2 0x00143b69 in st_eoh (g=0xb6bef290) at engine.c:1296

3 0x00144aa6 in mi_engine (ctx=0x8079f18) at engine.c:405

4 0x00146e80 in mi_handle_session (ctx=0x8079f18) at handler.c:45

5 0x0014564e in mi_thread_handle_wrapper (arg=0x8079f18) at listener.c:579

6 0x003b1bc9 in start_thread (arg=0xb6befb70) at pthread_create.c:301

7 0x004a904e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133

(gdb) bt full

0 0x0013568d in arc_eoh (msg=0xb6001ab0) at arc.c:2415

    __s2_len = 8
    keep = <value optimized out>
    c = <value optimized out>
    n = <value optimized out>
    nsets = <value optimized out>
    hashtype = <value optimized out>
    type = <value optimized out>
    status = <value optimized out>
    h = 0x0
    set = 0x0
    inst = <value optimized out>
    htag = 0x0

1 0x0804dc19 in mlfi_eoh (ctx=0x8079f18) at openarc.c:3087

    last = <value optimized out>
    status = <value optimized out>
    cc = <value optimized out>
    afc = 0xb6000928
    p = <value optimized out>
    err = 0x0
    conf = 0x8068018
    hdr = <value optimized out>
    __PRETTY_FUNCTION__ = "mlfi_eoh"

2 0x00143b69 in st_eoh (g=0xb6bef290) at engine.c:1296

    fi_eoh = <value optimized out>

3 0x00144aa6 in mi_engine (ctx=0x8079f18) at engine.c:405

    len = 0
    i = <value optimized out>
    sd = 9
    ret = 0
    curstate = 8
    newstate = 8
    call_abort = 1
    r = -2
    cmd = 78 'N'
    buf = 0x0
    arg = {a_len = 0, a_buf = 0x0, a_idx = 6, a_ctx = 0x8079f18}
    timeout = {tv_sec = 7209, tv_usec = 999988}
    f = 0x143b40 <st_eoh>
    fi_abort = 0x804cf50 <mlfi_abort>
    fi_close = <value optimized out>

4 0x00146e80 in mi_handle_session (ctx=0x8079f18) at handler.c:45

    ret = <value optimized out>

5 0x0014564e in mi_thread_handle_wrapper (arg=0x8079f18) at listener.c:579

No locals.

6 0x003b1bc9 in start_thread (arg=0xb6befb70) at pthread_create.c:301

    __res = <value optimized out>
    __ignore1 = 0
    __ignore2 = 0
    pd = 0xb6befb70
    now = <value optimized out>
    unwind_buf = {cancel_jmp_buf = {{jmp_buf = {3944436, 0, 4001536,

-1228999640, 2008660015, 2087250754}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = pagesize_m1 = sp = freesize =

7 0x004a904e in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:133

No locals.

On Wed, Jul 19, 2017 at 8:09 AM, Juri Haberland notifications@github.com wrote:

Try to run it in foreground and start it with gdb. After it fails, do a 'bt full'.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/mskucherawy/OpenARC/issues/46#issuecomment-316380741, or mute the thread https://github.com/notifications/unsubscribe-auth/AAqDqkA0LLcQgep4yApMC0GeSiXidBXNks5sPf_7gaJpZM4Ocqu4 .

juh commented 7 years ago

Ah, tested the wrong commit - I can reproduce it now. Will look into this issue tonight (CET time). Just backout the last commit for now.

smjones commented 7 years ago

On 07/19/2017 03:18 PM, Matt Domsch wrote:

I'm seeing it fail (crashes on every incoming message) on EL6, with git HEAD:

commit 4dfdb5b9944a3da6b2c4ad7125496844942b7520 Author: Murray S. Kucherawy msk@trusteddomain.org Date: Wed Jul 19 02:15:31 2017 -0700

Seeing the same on FreeBSD 10.3, FWIW.

Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 802007c00 (LWP 101084/openarc)] arc_eoh (msg=0x80205a600) at arc.c:2415 2415 if (strcmp(arc_param_get(h->hdr_data, "a"), "rsa-sha1") == 0)

--S.

andreasschulze commented 7 years ago

I suppose the latest commit is wrong. the code call arc_param_get which may return NULL and thus call strcmp(NULL, something)

juh commented 7 years ago

See pull request #48

juh commented 7 years ago

This issue is fixed by commit #dff1681.