From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: References: From: Venkatesh Srinivas Date: Sun, 6 Sep 2009 12:19:08 -0400 Message-ID: To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [9fans] fossil 'sync' lockup? Topicbox-Message-UUID: 6664aef8-ead5-11e9-9d60-3106f5b1d025 On Sun, Sep 6, 2009 at 11:54 AM, erik quanstrom wrot= e: >> I executed the fossil 'sync' command when my terminal was under >> moderate I/O load earlier today. Fossil seems to have locked up. Has >> anyone seen anything like this? The locking I can see along the path of 'sync' is vtlock (exclusive lock) of the Epoch lock in fsSync, the per-file locks in fileMetaFlush, and the cache's dirty lock and main lock in cacheFlush. Luckily VtLocks know their holder... Why are VtLocks in liboventi? And why does liboventi have an implementation of a subset of the thread library (rwlocks and rendezvous?) >> I have a dump of the first 256mb of kernel memory and all physical >> memory. Are there any structures that are kept at reasonably constant >> places in memory, so that I can start trawling them to see what fossil >> was doing when it died? > > how did you generate this dump? =C2=A0i've never done that. I was running my terminal in qemu. Switch to the monitor, pmemsave and mems= ave. > the short answer is that any non-automatic variables have > fixed address. =C2=A0for example, the process table is here > port/proc.c:/^procalloc in .arena Okay, thanks! Luckily nm worked with 9pcf and I found procalloc; I was going to start at the mach structure (always at KZERO + 0x15000) , find the current process structure's address, and then trawl memory for processes around it till I found fossil. > i hope i'm missing something. I hope so too. grep and seeking to the right offsets in a dump was not my least favorite thing ever, but its close. Thanks, -- vs