core dump in cvsup caused by _once()?

Sean C. Farley scf at FreeBSD.org
Tue Dec 1 22:04:06 UTC 2009


On Tue, 1 Dec 2009, John Baldwin wrote:

> On Tuesday 01 December 2009 1:59:25 pm Sean C. Farley wrote:
>> On Tue, 1 Dec 2009, John Baldwin wrote:
>> Here is what I get from cvsupd:
>> GNU gdb 6.1.1 [FreeBSD]
>> Copyright 2004 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 "amd64-marcel-freebsd"...
>> Core was generated by `cvsupd'.
>> Program terminated with signal 4, Illegal instruction.
>> Reading symbols from /lib/libz.so.5...done.
>> Loaded symbols for /lib/libz.so.5
>> Reading symbols from /lib/libm.so.5...done.
>> Loaded symbols for /lib/libm.so.5
>> Reading symbols from /usr/FreeBSD/branches/stable/8/src/lib/libc/libc.so.7...done.
>> Loaded symbols for /usr/FreeBSD/branches/stable/8/src/lib/libc/libc.so.7
>
> Wait, you are using a libc from stable/8 and getting this problem? 
> The _once() stuff isn't in stable/8's libc, only in head.

I am running stable/8, and I can confirm that the source tree is 
actually stable/8.

>> Reading symbols from /libexec/ld-elf.so.1...done.
>> Loaded symbols for /libexec/ld-elf.so.1
>> #0  0x00000008005c0d20 in _rtld_error () from /libexec/ld-elf.so.1
>> (gdb) where
>> #0  0x00000008005c0d20 in _rtld_error () from /libexec/ld-elf.so.1
>> #1  0x00000008005c156b in dladdr () from /libexec/ld-elf.so.1
>> #2  0x00000008005c1643 in dladdr () from /libexec/ld-elf.so.1
>> #3  0x00000008005be7bd in ?? () from /libexec/ld-elf.so.1
>> #4  0x0000000000816ed8 in ?? ()
>> #5  0x0000000000000000 in ?? ()
>> #6  0x0000000000000006 in ?? ()
>> #7  0x0000000000000043 in ?? ()
>> #8  0x000000000072aba8 in ?? ()
>> #9  0x0000000800a368e1 in _nsyycheck () from /usr/FreeBSD/branches/stable/8/src/lib/libc/libc.so.7
>> #10 0x000000000072abbb in ?? ()
>> #11 0x0000000000008000 in ?? ()
>> #12 0x000000000072abbe in ?? ()
>> #13 0x0000000000000216 in ?? ()
>> #14 0x0000000000000000 in ?? ()
>> #15 0x00000008005ed600 in ?? ()
>> #16 0x0000000000000161 in ?? ()
>> #17 0x0000000800a09049 in tzload (name=0x800a368e1 "posixrules", sp=0x7353b8, doextend=0) at /usr/FreeBSD/branches/stable/8/src/lib/libc/stdtime/localtime.c:422
>
> This is a call to strcat() in my sources here.  Can you pop up to this 
> frame and do 'list'?

The strcat() puzzled me too.  I do have very few changes in the tree, but they
are not related to this.

(gdb) frame 17
#17 0x0000000800a09049 in tzload (name=0x800a368e1 "posixrules", sp=0x7353b8, doextend=0) at /usr/FreeBSD/branches/stable/8/src/lib/libc/stdtime/localtime.c:422
422                             (void) strcat(fullname, name);
(gdb) l
417                                     return -1;
418                             if ((strlen(p) + 1 + strlen(name) + 1) >= sizeof fullname)
419                                     return -1;
420                             (void) strcpy(fullname, p);
421                             (void) strcat(fullname, "/");
422                             (void) strcat(fullname, name);
423                             /*
424                             ** Set doaccess if '.' (as in "../") shows up in name.
425                             */
426                             if (strchr(name, '.') != NULL)

Sean
-- 
scf at FreeBSD.org


More information about the freebsd-current mailing list