travisghansen/fanout

write segfault when socket closes without notification

Closed this issue · 1 comments

Looks like there are various ways to clean it up..

Program received signal SIGPIPE, Broken pipe.
0x00cf2402 in __kernel_vsyscall ()
(gdb) bt

(gdb) bt full
#0 0x00cf2402 in __kernel_vsyscall ()

No symbol table info available.
#1 0x001e34a1 in send () from /lib/libc.so.6

No symbol table info available.
#2 0x0804a526 in client_write (c=0x80e3ae8, data=0x80efbd8 "1349006458\n") at fanout.c:853

    sent = -1073750152

#3 0x0804a6ef in client_process_input_buffer (c=0x80e3ae8) at fanout.c:882

    line = 0x8086280 "ping"
    message = 0x80efbd8 "1349006458\n"
    action = 0xbfffe098 "\005"
    channel = 0x804bbb7 "DEBUG"
    i = 4

#4 0x08049d3f in main (argc=11, argv=0xbfffe764) at fanout.c:566

    srvsock = 7
    epollfd = 8
    nfds = 1
    efd = 1039
    n = 0
    res = 5
    portno = 80
    optval = -1073748208
    optlen = 4
    listen_backlog = 25
    max_events = 25
    pidfile = 0x0
    buffer = "ping\n", '\000' <repeats 1019 times>
    pwd = 0x2669b4
    grp = 0x266934
    user = 0xbfffe8c6 "sparklefan"
    group = 0xbfffe8d1 "sparklefan"
    user_id = 102
    group_id = 104
    ev = {events = 1, data = {ptr = 0x5fb, fd = 1531, u32 = 1531, u64 = 20497748600030715}}
    events = 0xbfffe0b0
    client_i = 0x80e3ae8
    client_tmp = 0x80edd08
    clilen = 28
    serv_addr = {sin6_family = 10, sin6_port = 20480, sin6_flowinfo = 0, sin6_addr = {in6_u = {
          u6_addr8 = '\000' <repeats 15 times>, u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, u6_addr32 = {0, 0, 0,
            0}}}, sin6_scope_id = 0}
    cli_addr = {sin6_family = 10, sin6_port = 45760, sin6_flowinfo = 0, sin6_addr = {in6_u = {
          u6_addr8 = "\000\000\000\000\000\000\000\000\000\000\377\377g\367\206;", u6_addr16 = {0, 0, 0, 0, 0,
            65535, 63335, 15238}, u6_addr32 = {0, 0, 4294901760, 998700903}}}, sin6_scope_id = 0}
    c = -1
    option_index = 0
    calculated_client_limit = 7984
    long_options = {{name = 0x804b390 "port", has_arg = 1, flag = 0x0, val = 0}, {name = 0x804b395 "daemon",
        has_arg = 0, flag = 0x804d4b4, val = 1}, {name = 0x804b39c "logfile", has_arg = 1, flag = 0x0,
        val = 0}, {name = 0x804b3a4 "pidfile", has_arg = 1, flag = 0x0, val = 0}, {
        name = 0x804b3ac "debug-level", has_arg = 1, flag = 0x0, val = 0}, {name = 0x804b3b8 "help",
        has_arg = 0, flag = 0x0, val = 0}, {name = 0x804b3bd "client-limit", has_arg = 1, flag = 0x0, val = 0},
      {name = 0x804b3ca "run-as", has_arg = 1, flag = 0x0, val = 0}, {name = 0x804b3d1 "max-logfile-size",
        has_arg = 1, flag = 0x0, val = 0}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}

Should be fixed as of commit 8c88678