All of lore.kernel.org
 help / color / mirror / Atom feed
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/

  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.