Subject: Re: bin/34979: -current libc causes boot failure
To: None <gnats-admin@netbsd.org, netbsd-bugs@netbsd.org, scotte@warped.com>
From: Christos Zoulas <christos@zoulas.com>
List: netbsd-bugs
Date: 11/12/2006 17:15:09
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>, gnats-bugs@NetBSD.org
Cc: gnats-admin@NetBSD.org, netbsd-bugs@NetBSD.org
Subject: Re: bin/34979: -current libc causes boot failure
Date: Sun, 12 Nov 2006 12:13:59 -0500

 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