bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

more info about sudo/pflocal/syslogd problem


From: Marcus Brinkmann
Subject: more info about sudo/pflocal/syslogd problem
Date: Sun, 28 Oct 2001 02:06:48 +0100
User-agent: Mutt/1.3.18i

Hi,

I am happy to be able to present some more info on the problems involving
sudo/pflocal/syslogd.

There seem to be a couple of issues.  First, it seems that sudo and
pflocal/libpipe seem to work fine in the normal case.  What happens
is that sudo sends a diagnostic line to syslogd.  syslogd receives only
one line, logs it, and on receiving the second line (?) then goes into
foobar mode.

After enough sudos, the pipe buffer will be full (16kb), and the subsequent
sends will hang in pflocal, because the writing thread will wait for the
buffer to empty a bit.  There seems to be a bug here, because if you now
kill syslogd, the writing thread will not wake up rather than getting a
broken pipe or whatever.  I also had pflocal crashing when restarting
syslogd in this situation, but that does not seem to be reproducible.

So at least two bugs involved here?  It seems so.  Below you can see
the gdb output of syslogd at the time of sudo hanging.  I should be able
to narrow it further than that by debugging syslogd in more detail.

Thanks,
Marcus

Script started on Sun Oct 28 02:54:34 2001
ulysses:/mnt/inetutils/inetutils-20010817/syslogd# gdb / /.  ./syslogd 
6968
GNU gdb 5.0.90-cvs (MI_OUT)
Copyright 2001 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-unknown-gnu0.2"...
/mnt/inetutils/inetutils-20010817/syslogd/6968: No such file or directory.
Attaching to program `/mnt/inetutils/inetutils-20010817/syslogd/./syslogd', pid 
6968
Reading symbols from /lib/libz.so.1...done.
Loaded symbols for /lib/libz.so.1
Reading symbols from /lib/libreadline.so.4...done.
Loaded symbols for /lib/libreadline.so.4
Reading symbols from /lib/libresolv.so.2...done.
Loaded symbols for /lib/libresolv.so.2
Reading symbols from /lib/libnsl.so.1...done.
Loaded symbols for /lib/libnsl.so.1
Reading symbols from /lib/libc.so.0.2...done.
Loaded symbols for /lib/libc.so.0.2
Reading symbols from /lib/libncurses.so.5...done.
Loaded symbols for /lib/libncurses.so.5
Reading symbols from /lib/ld.so...done.
Loaded symbols for /lib/ld.so
Reading symbols from /lib/libmachuser.so.1...done.
Loaded symbols for /lib/libmachuser.so.1
Reading symbols from /lib/libhurduser.so.0.0...done.
Loaded symbols for /lib/libhurduser.so.0.0
Reading symbols from /lib/libnss_files.so.2...done.
Loaded symbols for /lib/libnss_files.so.2
Reading symbols from /lib/libnss_dns.so.2...done.
Loaded symbols for /lib/libnss_dns.so.2
[Switching to thread 6968.1]
(gdb) bt
#0  0x010ba831 in _hurd_intr_rpc_msg_in_trap () at intr-msg.c:118
#1  0x01252fcb in __socket_recv (sock=98, addr=0x1025698, flags=0, 
    data=0x102569c, dataCnt=0x10256a0, ports=0x10256a4, portsCnt=0x10256a8, 
    control=0x10256ac, controlCnt=0x10256b0, outflags=0x1025720, amount=1024)
    at /cdrecord/marcus/glibc-2.2.4/i386-gnu/obj/hurd/RPC_socket_recv.c:166
#2  0x01191047 in recvfrom (fd=4, buf=0x10257d8, n=1024, flags=0, addrarg=
      {__sockaddr__ = 0x10257c8, __sockaddr_at__ = 0x10257c8, __sockaddr_ax25__ 
= 0x10257c8, __sockaddr_dl__ = 0x10257c8, __sockaddr_eon__ = 0x10257c8, 
__sockaddr_in__ = 0x10257c8, __sockaddr_in6__ = 0x10257c8, __sockaddr_inarp__ = 
0x10257c8, __sockaddr_ipx__ = 0x10257c8, __sockaddr_iso__ = 0x10257c8, 
__sockaddr_ns__ = 0x10257c8, __sockaddr_un__ = 0x10257c8, __sockaddr_x25__ = 
0x10257c8}, 
    addr_len=0x1025754) at ../sysdeps/mach/hurd/recvfrom.c:49
#3  0x0804a1b8 in main (argc=1, argv=0x1025c40) at syslogd.c:663
#4  0x010c701b in __libc_start_main (main=0x804991c <main>, argc=1, 
    ubp_av=0x1025c40, init=0x8049280 <_init>, fini=0x804d150 <_fini>, 
    rtld_fini=0xc640 <_dl_fini>, stack_end=0x1025c3c)
    at ../sysdeps/generic/libc-start.c:129
(gdb) bt full
#0  0x010ba831 in _hurd_intr_rpc_msg_in_trap () at intr-msg.c:118
        err = 0
        ss = (struct hurd_sigstate *) 0x125a808
        user_option = 3
        user_timeout = 0
        m = (union msg *) 0x1023da8
        msgh_bits = 5395
        remote_port = 98
        msgid = 26015
        save_data = {i = {268509186, 0}}
#1  0x01252fcb in __socket_recv (sock=98, addr=0x1025698, flags=0, 
    data=0x102569c, dataCnt=0x10256a0, ports=0x10256a4, portsCnt=0x10256a8, 
    control=0x10256ac, controlCnt=0x10256b0, outflags=0x1025720, amount=1024)
    at /cdrecord/marcus/glibc-2.2.4/i386-gnu/obj/hurd/RPC_socket_recv.c:166
        sock = 98
        addr = (mach_port_t *) 0x10004005
        flags = 16923908
        outflags = (int *) 0x10004005
        amount = 3
        Mess = {In = {Head = {msgh_bits = 5395, msgh_size = 32, 
      msgh_remote_port = 98, msgh_local_port = 84, msgh_seqno = 146, 
      msgh_id = 26015}, flagsType = {msgt_name = 2, msgt_size = 32, 
      msgt_number = 1, msgt_inline = 1, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, flags = 0, amountType = {
---Type <return> to continue, or q <return> to quit---
      msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, 
      msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, 
    amount = 1024}, Out = {Head = {msgh_bits = 5395, msgh_size = 32, 
      msgh_remote_port = 98, msgh_local_port = 84, msgh_seqno = 146, 
      msgh_id = 26015}, RetCodeType = {msgt_name = 2, msgt_size = 32, 
      msgt_number = 1, msgt_inline = 1, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, RetCode = 0, addrType = {
      msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline = 1, 
      msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, addr = 1024, 
    dataType = {msgtl_header = {msgt_name = 0, msgt_size = 0, msgt_number = 0, 
        msgt_inline = 1, msgt_longform = 1, msgt_deallocate = 0, 
        msgt_unused = 0}, msgtl_name = 8, msgtl_size = 8, msgtl_number = 136}, 
    data = "<78>Oct 28 02:53:01 /USR/SBIN/CRON[6973]: (mail) CMD (  if [ -x 
/usr/sbin/exim -a -f /etc/exim/exim.conf ]; then /usr/sbin/exim -q ; 
fi)\000\000\0000\021\000 
\000\000\000\000\000\000\000\0000\b\000\b\000\000\000\000\000\002 
\001\020\000\000\000\000?\030\036\001\220j\036\001\214?\002\001t\025\031\001\003",
 '\000' <repeats 11 times>, "d\025\031\001\003"..., portsType = {msgtl_header = 
{
        msgt_name = 0, msgt_size = 0, msgt_number = 0, msgt_inline = 0, 
        msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, 
      msgtl_name = 0, msgtl_size = 0, msgtl_number = 0}, ports = {
      0 <repeats 93 times>, 268509186, 1, 268509201, 96, 16926636, 17476819, 
      85, 16928149, 0, 0, 16926808, 16926812, 16927896, 17540862, 19230164, 
      274, 16926760, 0, 18749612, 16927836, 16926732, 17458148, 85, 16928149, 
      1, 335546380, 796288356, 85, 5395, 0, 3, 19245064, 0, 19238856, 0, 0, 
---Type <return> to continue, or q <return> to quit---
      16927836, 19181628, 16926760, 3, 0, 17479169, 18749612, 274, 134537460, 
      19181585, 18749612, 16928052, 19245064, 0, 1, 0, 0, 0, 84, 127, 20118, 
      38595769, 1807149313, 268501000, 1, 335546380, 0 <repeats 149 times>, 
      17876302, 18749612, 16929216, 16929216, 0, 0, 0, 16927476, 17876417, 
      16929216, 0, 0, 17876398, 18749612, 16929216, 16929216, 0, 0, 0, 
      16927524, 17876684, 16929216, 0, 0, 17876665, 18749612, 16927548, 0, 0, 
      0, 0, 16927604, 17865881, 16929216, 0, 0, 17865566, 18749612, 134536341, 
      134536341, 0, 0, 0, 0, 1073741827, 1, 10, 0, 0, 0, 134536341, 16929156, 
      17820700, 16929216, 1, 0, 16929216, 18749612, 20, 16929300, 
      0 <repeats 47 times>, 268509201, 1929379936, 16927776, 0, 4294967295, 
      4294967292, 0, 0, 0, 0, 0, 0, 0, 0, 0, 134533567, 19230164, 65554, 
      16928040, 17458148, 134536336, 1073741827, 2, 16929368, 16929156, 9, 
      4294967295, 0, 796029813, 85, 5395, 0, 3, 19245064, 0, 19242900, 
      16927988, 19242904, 16929116, 19181628, 16928040, 3, 16929116, 19181666, 
      84, 0, 0, 19181585...}, controlType = {msgtl_header = {msgt_name = 0, 
        msgt_size = 18, msgt_number = 0, msgt_inline = 0, msgt_longform = 0, 
        msgt_deallocate = 0, msgt_unused = 0}, msgtl_name = 56, 
      msgtl_size = 0, msgtl_number = 0}, 
    control = "T\000\000\000\210\000\000\000?e\000\000\002 
\001\020\000\000\000\000\002 
\001\020\001\000\000\000\000\000\0000\b\000\b\000\003\000\000\000\003\001", 
'\000' <repeats 734 times>, 
"?Q\002\001\210\230\000\000?\212\004\b\f\235\003\001\000\000\000\000\205\224\000\000\024C\002\000?\000\000\000`H\002",
 '\000' <repeats 25 times>, 
"?\212\004\b\000\000\000\000\000\000\000\000$R\002\001\210\230\000\000?\212\004\b??\t\0014R\002\001\217\227\000\0007?\t\001?\216\004\b`H\002\0---Type
 <return> to continue, or q <return> to quit---
00\205\224\000\000\024C\002\000?\002\000\000`H\002\000\006\002y\005?Z\001\000?\212\004\b\024R\002\001T?\036\001\000\000\000\000yO\n\001\020R\002\001\003\000\000\000\030\000\000"...,
 outflagsType = {msgt_name = 172, msgt_size = 24, 
      msgt_number = 286, msgt_inline = 0, msgt_longform = 0, 
      msgt_deallocate = 0, msgt_unused = 0}, outflags = 18770576}}
        OutP = (Reply *) 0x1023da8
        msg_result = 98
        msgh_simple = 268451845
        msgh_size = 84
        msgh_size_delta = 98
        flagsType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        amountType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        RetCodeCheck = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        addrCheck = {msgt_name = 17, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
        outflagsCheck = {msgt_name = 2, msgt_size = 32, msgt_number = 1, 
  msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}
#2  0x01191047 in recvfrom (fd=4, buf=0x10257d8, n=1024, flags=0, addrarg=
      {__sockaddr__ = 0x10257c8, __sockaddr_at__ = 0x10257c8, __sockaddr_ax25__ 
= 0x10257c8, __sockaddr_dl__ = 0x10257c8, __sockaddr_eon__ = 0x10257c8, 
__sockaddr_in__ = 0x10257c8, __sockaddr_in6__ = 0x10257c8, __sockaddr_inarp__ = 
0x10257c---Type <return> to continue, or q <return> to quit---
8, __sockaddr_ipx__ = 0x10257c8, __sockaddr_iso__ = 0x10257c8, __sockaddr_ns__ 
= 0x10257c8, __sockaddr_un__ = 0x10257c8, __sockaddr_x25__ = 0x10257c8}, 
    addr_len=0x1025754) at ../sysdeps/mach/hurd/recvfrom.c:49
        port = (struct hurd_port *) 0x1258e48
        __result = 0
        __d = (struct hurd_fd *) 0x1258e48
        __ulink = {resource = {next = 0x0, prevp = 0x1258e4c}, thread = {
    next = 0x0, prevp = 0x125ac5c}, cleanup = 0x10c58c0 <_hurd_port_cleanup>, 
  cleanup_data = 0x62}
        __ctty_ulink = {resource = {next = 0x102571c, prevp = 0x117d17a}, 
  thread = {next = 0x804f778, prevp = 0x9}, 
  cleanup = 0x8048bfa <object.11+115174314>, cleanup_data = 0x108b764}
        crit = (void *) 0x125a808
        err = 1024
        addrport = 99
        bufp = 0x10257d8 ""
        nread = 1024
        ports = (mach_port_t *) 0x10256f4
        nports = 0
        cdata = 0x0
        clen = 0
#3  0x0804a1b8 in main (argc=1, argv=0x1025c40) at syslogd.c:663
        frominet = {sin_len = 43 '+', sin_family = 181 '?', sin_port = 0, 
  sin_addr = {s_addr = 1}, sin_zero = " F\002\000?W\002\001"}
---Type <return> to continue, or q <return> to quit---
        result = 268451845
        len = 16
        nready = 268451845
        argc = 16930776
        argv = (char **) 0x8050030
        option = 268451845
        i = 1
        fp = (FILE *) 0x10257d8
        p = 0x10004005 <Address 0x10004005 out of bounds>
        line = '\000' <repeats 1024 times>
        ppid = 16930760
        fdarray = (struct pollfd *) 0x8050028
        nfds = 2
#4  0x010c701b in __libc_start_main (main=0x804991c <main>, argc=1, 
    ubp_av=0x1025c40, init=0x8049280 <_init>, fini=0x804d150 <_fini>, 
    rtld_fini=0xc640 <_dl_fini>, stack_end=0x1025c3c)
    at ../sysdeps/generic/libc-start.c:129
        ubp_av = (char **) 0x1025c40
        fini = (void (*)()) 0x247b0 <_dl_debug_mask>
        rtld_fini = (void (*)()) 0x1023d04
        ubp_ev = (char **) 0x10004005
(gdb) thr 2
[Switching to thread 2 (thread 6968.2)]#0  0x010a48cc in __mach_msg_trap ()
   from /lib/libc.so.0.2
(gdb) bt
#0  0x010a48cc in __mach_msg_trap () from /lib/libc.so.0.2
#1  0x010a4f79 in __mach_msg (msg=0x1262f74, option=3, send_size=32, 
    rcv_size=4096, rcv_name=64, timeout=0, notify=0) at msg.c:47
#2  0x010a553d in __mach_msg_server_timeout (demux=0x10b0e40 <msgport_server>, 
    max_size=4096, rcv_name=64, option=0, timeout=0) at msgserver.c:169
#3  0x010a55a4 in __mach_msg_server (demux=0x10b0e40 <msgport_server>, 
    max_size=4096, rcv_name=64) at msgserver.c:209
#4  0x010b0f4b in _hurd_msgport_receive () at msgportdemux.c:68
#5  0x464c457f in ?? ()
(gdb) bt full
#0  0x010a48cc in __mach_msg_trap () from /lib/libc.so.0.2
No locals.
#1  0x010a4f79 in __mach_msg (msg=0x1262f74, option=3, send_size=32, 
    rcv_size=4096, rcv_name=64, timeout=0, notify=0) at msg.c:47
        option = 3
        ret = 268451845
#2  0x010a553d in __mach_msg_server_timeout (demux=0x10b0e40 <msgport_server>, 
    max_size=4096, rcv_name=64, option=0, timeout=0) at msgserver.c:169
        request = (mig_reply_header_t *) 0x1262f74
        reply = (mig_reply_header_t *) 0x1261f74
        mr = 268451845
#3  0x010a55a4 in __mach_msg_server (demux=0x10b0e40 <msgport_server>, 
    max_size=4096, rcv_name=64) at msgserver.c:209
No locals.
#4  0x010b0f4b in _hurd_msgport_receive () at msgportdemux.c:68
No locals.
#5  0x464c457f in ?? ()
No symbol table info available.
(gdb) 
#0  0x010a48cc in __mach_msg_trap () from /lib/libc.so.0.2
No locals.
#1  0x010a4f79 in __mach_msg (msg=0x1262f74, option=3, send_size=32, 
    rcv_size=4096, rcv_name=64, timeout=0, notify=0) at msg.c:47
        option = 3
        ret = 268451845
#2  0x010a553d in __mach_msg_server_timeout (demux=0x10b0e40 <msgport_server>, 
    max_size=4096, rcv_name=64, option=0, timeout=0) at msgserver.c:169
        request = (mig_reply_header_t *) 0x1262f74
        reply = (mig_reply_header_t *) 0x1261f74
        mr = 268451845
#3  0x010a55a4 in __mach_msg_server (demux=0x10b0e40 <msgport_server>, 
    max_size=4096, rcv_name=64) at msgserver.c:209
No locals.
#4  0x010b0f4b in _hurd_msgport_receive () at msgportdemux.c:68
No locals.
#5  0x464c457f in ?? ()
No symbol table info available.
(gdb) quit
The program is running.  Quit anyway (and detach it)? (y or n) y
Detaching from program `/mnt/inetutils/inetutils-20010817/syslogd/./syslogd' 
pid 6968
ulysses:/mnt/inetutils/inetutils-20010817/syslogd# l exit

Script done on Sun Oct 28 02:55:13 2001





reply via email to

[Prev in Thread] Current Thread [Next in Thread]