From: Andrew Morton <akpm@digeo.com>
To: Ed Tomlinson <tomlins@cam.org>
Cc: linux-mm@kvack.org
Subject: Re: 35-mm1 triggers watchdog
Date: Tue, 17 Sep 2002 13:12:22 -0700 [thread overview]
Message-ID: <3D878CA6.DE7BADDD@digeo.com> (raw)
In-Reply-To: 200209170738.48565.tomlins@cam.org
Ed Tomlinson wrote:
>
> Hi Andrew,
>
> I have had 35-mm1 reboot twice via the software watchdog. What is the best
> way to debug this. I do have a serial term and can rebuild patched with the
> kernel debugger, just need some instructions on how to catch the stall and
> what info to gather. Is there a good FAQ on kernel debugger?
Normally ksymoops will tell you where it was locked when
the NMI watchdog hit. Aren't you getting a stack trace?
Kernel debugger? kgdb.sourceforge.net, with patches from
http://www.zip.com.au/~akpm/linux/patches/2.5/2.5.35/2.5.35-mm1/experimental/
You're best off cross-compiling so the source, vmlinux, etc are on the
workstation and you copy kernels to the test box.
umm,
- patch the kernel
- enable kgdb in config
- build it, lilo it, add:
gdb gdbbaud=115200 gdbttyS=ttyS1
to the kernel boot line.
- Put my .gdbinit in $HOME.
- reboot test box
- gdb vmlinux
rmt
(gdb) c
- Run test, wait for NMI watchdog.
Sometimes it's a bit hard to work out _why_ the target trapped into
the debugger, so I changed kgdb to deliver a SIGEMT in response to
NMI rather than SIGBUS/SIGSEGV.
set editing on
set radix 0x0a
define rmt
set remotebaud 115200
target remote /dev/ttyS0
end
define comm25
p ((struct thread_info *)((int)$esp & ~0x1fff))->task->comm
end
define task25
p ((struct thread_info *)((int)$esp & ~0x1fff))->task
end
define thread25
p ((struct thread_info *)((int)$esp & ~0x1fff))
end
define reboot
maintenance packet r
end
#process information macros
define psname
if $arg0 == 0
set $athread = init_tasks[0]
else
set $athread = pidhash[(($arg0 >> 8) ^ $arg0) & 1023]
end
if $athread != 0
while $athread->pid != $arg0 && $athread != 0
set $athread = $athread->hash_next
end
if $athread != 0
printf "%d %s\n", $arg0, (char*)$athread->comm
end
end
end
define ps
set $initthread = init_tasks[0]
set $athread = init_tasks[0]
printf "%d %s\n", $athread->pid, (char*)($athread->comm)
set $athread = $athread->next_task
while $athread != ($initthread)
if ($athread->pid) != (0)
printf "%d %s\n", $athread->pid, (char*)$athread->comm
end
set $athread = $athread->next_task
end
end
define page_states
printf "Dirty: %dK\n", (page_states[0].nr_dirty + page_states[1].nr_dirty + page_states[2].nr_dirty + page_states[3].nr_dirty) * 4
printf "Writeback: %dK\n", (page_states[0].nr_writeback + page_states[1].nr_writeback + page_states[2].nr_writeback + page_states[3].nr_writeback) * 4
printf "Pagecache: %dK\n", (page_states[0].nr_pagecache + page_states[1].nr_pagecache + page_states[2].nr_pagecache + page_states[3].nr_pagecache) * 4
printf "Page Table Pages: %d\n", (page_states[0].nr_page_table_pages + page_states[1].nr_page_table_pages + page_states[2].nr_page_table_pages + page_states[3].nr_page_table_pages) * 4
printf "nr_reverse_maps: %d\n", page_states[0].nr_reverse_maps + page_states[1].nr_reverse_maps + page_states[2].nr_reverse_maps + page_states[3].nr_reverse_maps
end
define offsetof
set $off = &(((struct $arg0 *)0)->$arg1)
printf "%d 0x%x\n", $off, $off
end
# list_entry list type member
define list_entry
set $off = (int)&(((struct $arg1 *)0)->$arg2)
set $addr = (int)$arg0
set $res = $addr - $off
printf "0x%x\n", $res
end
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
next prev parent reply other threads:[~2002-09-17 20:12 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-17 4:43 dbench on tmpfs OOM's William Lee Irwin III
2002-09-17 4:43 ` William Lee Irwin III
2002-09-17 4:58 ` Andrew Morton
2002-09-17 4:58 ` Andrew Morton
2002-09-17 5:01 ` Martin J. Bligh
2002-09-17 5:01 ` Martin J. Bligh
2002-09-17 5:14 ` Andrew Morton
2002-09-17 5:14 ` Andrew Morton
2002-09-17 5:18 ` Martin J. Bligh
2002-09-17 5:18 ` Martin J. Bligh
2002-09-17 5:15 ` William Lee Irwin III
2002-09-17 5:15 ` William Lee Irwin III
2002-09-17 5:31 ` Andrew Morton
2002-09-17 5:31 ` Andrew Morton
2002-09-17 6:43 ` Christoph Rohland
2002-09-17 6:43 ` Christoph Rohland
2002-09-17 7:01 ` Hugh Dickins
2002-09-17 7:01 ` Hugh Dickins
2002-09-17 7:27 ` William Lee Irwin III
2002-09-17 7:27 ` William Lee Irwin III
2002-09-17 8:02 ` Andrew Morton
2002-09-17 8:02 ` Andrew Morton
2002-09-17 11:38 ` 35-mm1 triggers watchdog Ed Tomlinson
2002-09-17 20:12 ` Andrew Morton [this message]
2002-09-17 7:57 ` dbench on tmpfs OOM's Christoph Rohland
2002-09-17 7:57 ` Christoph Rohland
2002-12-10 5:28 ` William Lee Irwin III
2002-12-10 5:28 ` William Lee Irwin III
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3D878CA6.DE7BADDD@digeo.com \
--to=akpm@digeo.com \
--cc=linux-mm@kvack.org \
--cc=tomlins@cam.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.