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