Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Jun 2005 11:19:01 -0700
From:      Marcel Moolenaar <marcel@xcllnt.net>
To:        Xin LI <delphij@frontfree.net>
Cc:        howardsue@gmail.com, freebsd-arch@freebsd.org
Subject:   Re: How to get stack from every thread when doing crash dump?
Message-ID:  <b7c2cad4fe3d363722ecaed9f1e502e7@xcllnt.net>
In-Reply-To: <20050623102024.GA89874@frontfree.net>
References:  <20050623102024.GA89874@frontfree.net>

next in thread | previous in thread | raw e-mail | index | archive | help
On Jun 23, 2005, at 3:20 AM, Xin LI wrote:

> One problem with the mini-dump is that, since the mini-dump utilizes:
> 	dump_write((char *)curthread->td_kstack, curthread->td_kstack_pages * 
> PAGE_SIZE);
>
> To write out the stack, and at the point before exception.S, curthread 
> has
> been changed, we can only obtain the stack from the current thread, 
> which
> may not be enough for analyzing the backtrace.  What can we do to 
> improve
> this situation?

You can iterate over all the threads. Take a look at
	src/sys/kern/subr_kdb.c
or
	src/gnu/usr.bin/gdb/kgdb/kthr.c

In particular:
Use the list of all processes (allproc) to iterate over the
processeses and for each process walk the list of threads
and for each thread dump the stack, registers and other data.

-- 
  Marcel Moolenaar         USPA: A-39004          marcel@xcllnt.net




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?b7c2cad4fe3d363722ecaed9f1e502e7>