Re: cvs commit: src/sys/kern vfs_bio.c vfs_lock.c vfs_subr.c vfs

看板DFBSD_commit作者時間21年前 (2005/04/18 05:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/7 (看更多)
-On [20050417 01:32], Matthew Dillon (dillon@apollo.backplane.com) 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...
文章代碼(AID): #12OiwL00 (DFBSD_commit)
討論串 (同標題文章)
文章代碼(AID): #12OiwL00 (DFBSD_commit)