DragonFly BSD
DragonFly commits List (threaded) for 2005-04
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: cvs commit: src/sys/kern vfs_bio.c vfs_lock.c vfs_subr.c vfs_sync.c src/sys/sys buf.h mount.h tree.h vnode.h src/sys/vfs/gnu/ext2fs ext2_inode.c ext2_vfsops.c ext2_vnops.c src/sys/vfs/hpfs hpfs_vnops.c src/sys/vfs/msdosfs msdosfs_vfsops.c ...

From: Jeroen Ruigrok/asmodai <asmodai@xxxxxx>
Date: Sun, 17 Apr 2005 10:55:11 +0200

-On [20050417 01:32], Matthew Dillon (dillon@xxxxxxxxxxxxxxxxxxxx) wrote:
>    That's not good.  What are you seeing?  Is it reproducable?  I'll back 
>    the commit out if necessary.

Never mind that.  It is not your commit.

I suspected some subtle file system corruption because after your commit I
built world and kernel, cvsupped my repositories and subsequently got a 100%
reproduceable SIGSEGV (sig 11) with cvs when trying to use those
Even after using an older kernel I still got this behaviour, so hence I
started suspecting a subtle fs corruption.

This is not the case once I got to do some more testing.

cvs repeatedly failed in cvs-1.12.11/src/lock.c:

readlock = xmalloc (strlen (hostname) + sizeof (CVSRFL) + 40);

Funny part was that it failed on local filesystems, checking out from a
pserver worked as it should.

Tested it with a:

cd /tmp
mkdir test test2
cvs -d /tmp/test init
cd test2
cvs -d /tmp/test checkout .

and got the same problem (backtrace in lock.c, same line).

So that confirmed for me that it is not the filesystem reworking.

I now jumped back to CVS 1.12.9.  My SIGSEGV 11's are gone and I can
checkout from my local cvsupped repositories.

So something is rotten in CVS 1.12.11's use of some functions.  For the
record, my box has 1,5 GB of memory.


Program received signal SIGSEGV, Segmentation fault.
0x0806c7a1 in set_readlock_name ()
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/lock.c:4
465             readlock = xmalloc (strlen (hostname) + sizeof (CVSRFL) + 40);

#0  0x0806c7a1 in set_readlock_name ()
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/lock.c:4
#1  0x0806c866 in Reader_Lock (
    xrepository=0x80db280 "/home/ncvs/FreeBSD/ports")
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/lock.c:4
#2  0x0807af95 in do_recursion (frame=0xbfbff550)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/recurse.
#3  0x0807b886 in do_dir_proc (p=0x0, closure=0xbfbff608)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/recurse.
#4  0x08065d2c in walklist (list=0x82056a0, proc=0x807b22f <do_dir_proc>,
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/hash.c:3
#5  0x0807b0d6 in do_recursion (frame=0xbfbff6e0)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/recurse.
#6  0x0807ab0f in start_recursion (fileproc=0xffffffff,
    filesdoneproc=0x80dc0d9, direntproc=0x808ea3f <update_dirent_proc>,
    dirleaveproc=0x808edfc <update_dirleave_proc>, callerdat=0x0, argc=0,
    argv=0x8200f00, local=0, which=3, aflag=1, locktype=1,
    update_preload=0x8200eb0 "ports", dosrcs=1, repository_in=0x0)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/recurse.
#7  0x0808e2b0 in do_update (argc=0, argv=0x0, xoptions=0x0, xtag=0x0,
    xdate=0x0, xforce=0, local=0, xbuild=0, xaflag=0, xprune=0, xpipeout=0,
    which=0, xjoin_rev1=0x281e5020 " \200\r\bà\200\r\b ^ \b", xjoin_rev2=0x0,
    preload_update_dir=0x0, xdotemplate=0, repository=0x0)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/update.c
#8  0x080523c9 in checkout_proc (argc=1, argv=0x8200ec4, where_orig=0x0,
    mwhere=0x8200ea0 "ports", mfile=0x0, shorten=0, local_specified=0,
    omodule=0xbfbffc14 "ports", msg=0x80bae9a "Updating")
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/checkout
. c:1074
#9  0x08076057 in my_module (db=0x80d9310, mname=0xbfbffc14 "ports",
    m_type=CHECKOUT, msg=0x80bae9a "Updating",
    callback_proc=0x80516a3 <checkout_proc>, where=0x0, shorten=0,
    local_specified=0, run_module_prog=1, build_dirs=1, extra_arg=0x0,
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/modules.
#10 0x08076707 in do_module (db=0x0, mname=0x0, m_type=CHECKOUT, msg=0x0,
    callback_proc=0, where=0x0, shorten=0, local_specified=0,
    run_module_prog=0, build_dirs=0, extra_arg=0x0)
---Type <return> to continue, or q <return> to quit---
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/modules.
#11 0x0805131a in checkout (argc=1, argv=0xbfbffaf4)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/checkout
. c:374
#12 0x08095f8f in main (argc=3, argv=0xbfbffaec) at main.c:1053

And this is what I get *EVERY* time.

And it also shows that SIGSEGV, the dreaded signal 11, is not always faulty
hardware.  It can be miscompilation as well as other subtle bugs.

Jeroen Ruigrok van der Werven <asmodai(at)wxs.nl> / asmodai / kita no mono
Free Tibet! http://www.savetibet.org/ | http://ashemedai.deviantart.com/
http://www.tendra.org/   | http://www.in-nomine.org/
Man inagines that it is death he fears; but what he fears is the unforeseen,
the explosion.  What man fears is himself...

[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]