Re: Current method of dumping a processor?

From: Don Lewis <truckman_at_FreeBSD.org>
Date: Tue, 17 Aug 2004 19:10:15 -0700 (PDT)
On 17 Aug, Greg 'groggy' Lehey wrote:
> On Friday, 13 August 2004 at  1:07:41 +0200, Radek Kozlowski wrote:
>> On Fri, Aug 13, 2004 at 07:28:59AM +0930, Greg 'groggy' Lehey wrote:
>>> I've tried it on kernels built in January, May and yesterday.  In each
>>> case, I did:
>>>
>>>   dumpon /dev/ad0s2b
>>>
>>> (for appropriate values of ad0s2b).  All kernels include ddb.  I
>>> entered the debugger with ctrl-alt-esc and entered "panic".  The
>>> kernel from January dumps just fine.  The kernels from May and August
>>> hang.
>>>
>>> Am I doing something wrong?  Has something else changed?  Does anybody
>>> else have this problem?
>>
>> I also had this problem back in June when I was trying to get a crash
>> dump, but nobody replied (see
>> http://lists.freebsd.org/pipermail/freebsd-current/2004-June/029434.html).
>> I then learnt that I can use call doadump in ddb and have been using
>> that since then.
> 
> Thanks.  Yes, this seems to work.  Are we agreed that it's a bug that
> the 'panic' command just hangs?

Try the patch below.  I suspect that syncer_shutdown() is the most
likely culprit, but a number of the other shutdown_pre_sync handlers
could potentially hang.  They should probably be tweaked to only execute
if they can run without blocking.


Index: sys/kern/vfs_subr.c
===================================================================
RCS file: /home/ncvs/src/sys/kern/vfs_subr.c,v
retrieving revision 1.522
diff -u -r1.522 vfs_subr.c
--- sys/kern/vfs_subr.c	16 Aug 2004 08:33:37 -0000	1.522
+++ sys/kern/vfs_subr.c	18 Aug 2004 01:54:56 -0000
_at__at_ -60,6 +60,7 _at__at_
 #include <sys/malloc.h>
 #include <sys/mount.h>
 #include <sys/namei.h>
+#include <sys/reboot.h>
 #include <sys/sleepqueue.h>
 #include <sys/stat.h>
 #include <sys/sysctl.h>
_at__at_ -1742,6 +1743,8 _at__at_
 {
 	struct thread *td;
 
+	if (howto & RB_NOSYNC)
+		return;
 	td = FIRST_THREAD_IN_PROC(updateproc);
 	sleepq_remove(td, &lbolt);
 	mtx_lock(&sync_mtx);
Received on Wed Aug 18 2004 - 00:10:24 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:06 UTC