From owner-freebsd-arch@FreeBSD.ORG Fri Jun 24 00:45:16 2005 Return-Path: X-Original-To: freebsd-arch@freebsd.org Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 64F4416A41C for ; Fri, 24 Jun 2005 00:45:16 +0000 (GMT) (envelope-from marcel@xcllnt.net) Received: from ns1.xcllnt.net (209-128-86-226.bayarea.net [209.128.86.226]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3AAC743D49 for ; Fri, 24 Jun 2005 00:45:16 +0000 (GMT) (envelope-from marcel@xcllnt.net) Received: from [192.168.4.250] (dhcp50.pn.xcllnt.net [192.168.4.250]) by ns1.xcllnt.net (8.13.3/8.13.3) with ESMTP id j5O0jFQa005554; Thu, 23 Jun 2005 17:45:16 -0700 (PDT) (envelope-from marcel@xcllnt.net) In-Reply-To: <1e89cd5105062317397399075e@mail.gmail.com> References: <20050623102024.GA89874@frontfree.net> <1e89cd5105062317397399075e@mail.gmail.com> Mime-Version: 1.0 (Apple Message framework v622) Content-Type: text/plain; charset=ISO-8859-1; format=flowed Message-Id: <947299be8f3206c1a165c67af5c44d16@xcllnt.net> Content-Transfer-Encoding: quoted-printable From: Marcel Moolenaar Date: Thu, 23 Jun 2005 17:45:14 -0700 To: Howard X-Mailer: Apple Mail (2.622) Cc: freebsd-arch@freebsd.org Subject: Re: How to get stack from every thread when doing crash dump? X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Jun 2005 00:45:16 -0000 On Jun 23, 2005, at 5:39 PM, Howard wrote: > 2005/6/24, Marcel Moolenaar : On Jun 23, 2005, at=20= > 3:20 AM, Xin LI wrote: >> >> > One problem with the mini-dump is that, since the mini-dump=20 >> utilizes: >> >=A0=A0=A0=A0=A0=A0 dump_write((char *)curthread->td_kstack,=20 >> curthread->td_kstack_pages * >> > PAGE_SIZE); >> > >> > To write out the stack, and at the point before exception.S,=20 >> curthread >> > has >> > been changed, we can only obtain the stack from the current thread, >> > which >> > may not be enough for analyzing the backtrace.=A0=A0What can we do = to >> > improve >> > this situation? >> >> You can iterate over all the threads. Take a look at >> =A0=A0=A0=A0=A0=A0 src/sys/kern/subr_kdb.c >> or >> =A0=A0=A0=A0=A0=A0 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.=A0 > However is dumping the td_kstack_pages enough to get one thread's=20 > stack? We found the stack is not completed. What do you mean with "not completed"? --=20 Marcel Moolenaar USPA: A-39004 marcel@xcllnt.net