On Sun, Sep 6, 2009 at 11:54 AM, erik quanstrom<quans...@quanstro.net> wrote:
>> 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?  i've never done that.

I was running my terminal in qemu. Switch to the monitor, pmemsave and memsave.

> the short answer is that any non-automatic variables have
> fixed address.  for 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

Reply via email to