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