Subject: Re: bin/34979: -current libc causes boot failure
To: Scott Ellis <scotte@warped.com>
From: Christos Zoulas <christos@zoulas.com>
List: netbsd-bugs
Date: 11/12/2006 12:13:59
On Nov 12,  7:42am, scotte@warped.com (Scott Ellis) wrote:
-- Subject: Re: bin/34979: -current libc causes boot failure

| Christos Zoulas wrote:
| > The following reply was made to PR bin/34979; it has been noted by GNATS.
| > 
| > From: christos@zoulas.com (Christos Zoulas)
| > To: Scott Ellis <scotte@warped.com>
| > Cc: gnats-bugs@NetBSD.org, gnats-admin@NetBSD.org,
| > 	netbsd-bugs@NetBSD.org
| > Subject: Re: bin/34979: -current libc causes boot failure
| > Date: Sat, 11 Nov 2006 22:24:43 -0500
| > 
| >  On Nov 11,  9:48pm, christos@zoulas.com (Christos Zoulas) wrote:
| >  -- Subject: Re: bin/34979: -current libc causes boot failure
| >  
| >  | Try removing /var/run/utmp; there appears to be something wrong with it.
| >  
| >  But that was just a little too big. It does not explain why it is stuck.
| >  It does not appear to be doing syscalls. Can you attach to it with gdb?
| 
| Sure.   This is booting w/o syslogd, running it manually, and then 
| attaching to it with gdb (when syslogd is spinning using 100% CPU).  The 
| SIGTERM near the end is me killing it via 'kill -9'.
| 
| intrepid# gdb /usr/sbin/syslogd 208
| GNU gdb 6.5
| Copyright (C) 2006 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 "x86_64--netbsd"...(no debugging symbols found)
| 
| Attaching to program: /usr/sbin/syslogd, process 208
| Reading symbols from /usr/lib/libutil.so.7...(no debugging symbols 
| found)...done.
| Loaded symbols for /usr/lib/libutil.so.7
| Reading symbols from /usr/lib/libwrap.so.0...(no debugging symbols 
| found)...done.
| Loaded symbols for /usr/lib/libwrap.so.0
| Reading symbols from /usr/lib/libc.so.12...
| (no debugging symbols found)...done.
| Loaded symbols for /usr/lib/libc.so.12
| Reading symbols from /usr/libexec/ld.elf_so...(no debugging symbols 
| found)...done.
| Loaded symbols for /usr/libexec/ld.elf_so
| 
| 0x00007f7ffd8bc100 in strlen () from /usr/lib/libc.so.12
| (gdb) bt
| #0  0x00007f7ffd8bc100 in strlen () from /usr/lib/libc.so.12
| #1  0x0000000000402b08 in matches_spec ()
| #2  0x0000000000402e7e in logmsg ()
| #3  0x000000000040566d in printsys ()
| #4  0x0000000000406318 in main ()
| (gdb) n
| Single stepping until exit from function strlen,
| which has no line number information.
| 0x0000000000402b08 in matches_spec ()
| (gdb) bt
| #0  0x0000000000402b08 in matches_spec ()
| #1  0x0000000000402e7e in logmsg ()
| #2  0x000000000040566d in printsys ()
| #3  0x0000000000406318 in main ()
| (gdb) s
| Single stepping until exit from function matches_spec,
| which has no line number information.
| ^C
| 
| Program received signal SIGTERM, Terminated.
| 0x0000000000402b08 in matches_spec ()
| (gdb) Quit
| (gdb)
| Single stepping until exit from function matches_spec,
| which has no line number information.
| ^C
| Program received signal SIGTERM, Terminated.
| 0x00007f7ffd8bc100 in strlen () from /usr/lib/libc.so.12
| (gdb) Quit
| (gdb) bt
| #0  0x00007f7ffd8bc100 in strlen () from /usr/lib/libc.so.12
| #1  0x0000000000402b08 in matches_spec ()
| #2  0x0000000000402e7e in logmsg ()
| #3  0x000000000040566d in printsys ()
| #4  0x0000000000406318 in main ()
| (gdb)


Seems to be looping in matches_spec(). Let's do 2 things.
1. send me your syslog.conf
2. put a fprintf(stderr, "%s %s"\n", spec, name); in matches_spec right after
   the check_function. (you might not be able to see what it prints since
   the file descriptor is closed, so you might want to open and close a
   file in /tmp).

christos