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 _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd