How to get stack from every thread when doing crash dump?

Howard howardsue at gmail.com
Fri Jun 24 00:39:12 GMT 2005


2005/6/24, Marcel Moolenaar <marcel at xcllnt.net>: 
> 
> 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. 

 However is dumping the td_kstack_pages enough to get one thread's stack? We 
found the stack is not completed.
 Thanks,
 
--
> Marcel Moolenaar USPA: A-39004 marcel at xcllnt.net 
> 
>


More information about the freebsd-arch mailing list