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
repositories.
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.

Backtrace:

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
65
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
65
#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
99
#2  0x0807af95 in do_recursion (frame=0xbfbff550)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/recurse.
c:829
#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.
c:1253
#4  0x08065d2c in walklist (list=0x82056a0, proc=0x807b22f <do_dir_proc>,
    closure=0xbfbff608)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/hash.c:3
86
#5  0x0807b0d6 in do_recursion (frame=0xbfbff6e0)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/recurse.
c:884
#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.
c:457
#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
:502
#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,
    stack=0x0)
    at /usr/src/gnu/usr.bin/cvs/cvs/../../../../contrib/cvs-1.12.11/src/modules.
c:528
#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.
c:758
#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]