From: Piet Delaney <pdelaney@bluelane.com>
To: Vivek Goyal <vgoyal@redhat.com>
Cc: Bernhard Kaindl <bk@suse.de>, Andrew Morton <akpm@osdl.org>,
V Srivatsa <vatsa@in.ibm.com>,
Sergei Shtylyov <sshtylyov@ru.mvista.com>,
Milind Dumbare <jhumo2002@yahoo.com>,
"Amit S. Kale" <amitkale@linsyssoft.com>,
Jason Wessel <jason.wessel@windriver.com>,
kexec@lists.infradead.org, Andrew Cagney <ac131313@cygnus.com>,
Bernhard Walle <bwalle@suse.de>,
George Anzinger <george@mvista.com>,
Randy Dunlap <rdunlap@xenotime.net>,
Vivek Goyal <vgoyal@in.ibm.com>,
Dave Anderson <anderson@redhat.com>,
"Eric W. Biederman" <ebiederm@xmission.com>,
Ingo Molnar <mingo@elte.hu>, Maneesh Soni <maneesh@in.ibm.com>,
Castor Fu <Castor.Fu@3PAR.com>,
Alexander Nyberg <alexn@telia.com>,
Joel Brobecker <brobecker@adacore.com>,
Daniel Jacobowitz <drow@false.org>
Subject: Re: Accessing Thread Information in kernel crash dumps with ddd+gdb
Date: Fri, 18 Apr 2008 13:07:08 -0700 [thread overview]
Message-ID: <4808FF6C.7040604@bluelane.com> (raw)
In-Reply-To: <20080418141028.GB1983@redhat.com>
[-- Attachment #1.1: Type: text/plain, Size: 4561 bytes --]
Vivek Goyal wrote:
>On Thu, Apr 17, 2008 at 05:16:55PM -0700, Piet Delaney wrote:
>
>
>>Hey Guys:
>>
>>I've been using kgdb for a while with our 2.6.12 and now 2.6.16 kernel
>>as well as kdump/kexec with our 2.6.16 kernel. I'm a bit disappointed
>>with the visibility of local variables on the threads/tasks not currently
>>running on CPUs. Both crash, and the gdb macros that you guys wrote,
>>show the most important stuff but I'd prefer to be able to see everything
>>with gdb/ddd as I can with kgdb; including all local variables and formal
>>parameters at each stack frame.
>>
>>A long time ago I used gdb on SunOS 4.1.4 and use to simply set $fp
>>and $sp from the saved information in the U-block to view a process.
>>I wish gdb would allow be to run your macros, btt for example, and extract
>>the stackp from task.thread.esp assign it temporally to $sp for the
>>current task,
>>do the backtrace command and see everything. Changing $sp and $fp for a
>>while
>>like I use to do with gdb on SunOS 4.1.4 and then using ddd+gdb to
>>browse the
>>stack formals and locals would be nice. Just doing a 'set write on'
>>isn't sufficient,
>>gdb wants a process and I can't see to satisfy it with simply setting
>>the current
>>thread.
>>
>>I was wondering if any of you guys have been thinking of anything like this
>>and had and hacks or ideas on how to see the locals and formals for all
>>tasks.
>>
>>One thought I had was a minor hack of the kexec code to do something
>>like your gdb macros
>>and walk thru the task list and then append a ELF Notes, like done by
>>crash_save_this_cpu(),
>>for each task. I have no idea if gdb has a limit on the number of
>>elf_prstatus structures
>>that can be provided. I suppose I'd leave it a KEXEC config variable to
>>enable this, as
>>some would argue that it's not as save as simply saving the regs for the
>>active CPUs.
>>This would leave 'info threads' with gdb similar to 'ps' with crash and
>>virtually identical
>>to the experience with kgdb.
>>
>>
>
>IIUC, you are suggesting that we create elf notes even for non-active
>tasks in vmcore.
>
Yep.
> We should not be doing that.
>
>- It is not safe to traverse through task list after system has crashed.
>
>
I agree it's not 100% safe, but for many developers it's a risk
worth taking. For example we make a lot of changes in the
TCP/IP stack for implementing a proxy for filtering network
traffic. Virtually all bugs are ones we make in the networking
code and having a precise view of each stack would be helpful.
It's extremely unlikely that the task structures have been whacked
in our case; and likely for many other developers.
>- We reserve the memory for elf notes at system boot. At that time we
> have no idea how many task system will have at the time of crash.
>
>
How about reserving memory with each task structure for the
ELF notes? With Solaris I reserved a page for each CPU to be
able to store the register windows during a stack overflow so
I could map it in during the stack overflow. It's not unreasonable
to allocate the space with the task; especially if it's a kernel
config option. If no one used it we could remove it and go for
an alternate approach.
>I think following can be a way forward for your requirement.
>
>- Either gdb should provide a SunOS kind of facility where one can
> provide stack pointer and switch the task context. ( I don't know
> if there is already a way to do that).
>
>
I'll talk on the gdb mailing list about it. Perhaps we could
initially get it in as a developer maintance function to allow
the registers to be changed for a thread in a core dump.
>- Or one can write a user space tool, which parses original vmcore,
> walks through task list, prepare elf notes for all the tasks and emit
> a new vmcore which is fetched to gdb.
>
>
Sounds difficult. I was talking to Dave Anderson about having
crash provide task info to his embedded gdb process but he
wasn't supportive of that approach.
Having a peace of code that has to walk thru the task list and
modify the elf notes seems a lot harder than just having the kernel
do it. More code that has to be maintained.
Isn't there precedence with other kernels like freebsd and Solaris
having the core dumps provide task information? If it was conditional
we could see just how many developers find the risk of causing a problem
during the crash dump a issue.
Looks to me like the size of the ELF notes is quite small and wouldn't
be a significant burden to add to the task structure.
-piet
>Thanks
>Vivek
>
>
[-- Attachment #1.2: Type: text/html, Size: 5548 bytes --]
[-- Attachment #2: Type: text/plain, Size: 143 bytes --]
_______________________________________________
kexec mailing list
kexec@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/kexec
next prev parent reply other threads:[~2008-04-18 20:07 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-18 0:16 Accessing Thread Information in kernel crash dumps with ddd+gdb Piet Delaney
2008-04-18 5:38 ` Piet Delaney
2008-04-18 14:10 ` Vivek Goyal
2008-04-18 20:07 ` Piet Delaney [this message]
2008-04-20 4:37 ` Eric W. Biederman
2008-04-18 21:04 ` Piet Delaney
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=4808FF6C.7040604@bluelane.com \
--to=pdelaney@bluelane.com \
--cc=Castor.Fu@3PAR.com \
--cc=ac131313@cygnus.com \
--cc=akpm@osdl.org \
--cc=alexn@telia.com \
--cc=amitkale@linsyssoft.com \
--cc=anderson@redhat.com \
--cc=bk@suse.de \
--cc=brobecker@adacore.com \
--cc=bwalle@suse.de \
--cc=drow@false.org \
--cc=ebiederm@xmission.com \
--cc=george@mvista.com \
--cc=jason.wessel@windriver.com \
--cc=jhumo2002@yahoo.com \
--cc=kexec@lists.infradead.org \
--cc=maneesh@in.ibm.com \
--cc=mingo@elte.hu \
--cc=rdunlap@xenotime.net \
--cc=sshtylyov@ru.mvista.com \
--cc=vatsa@in.ibm.com \
--cc=vgoyal@in.ibm.com \
--cc=vgoyal@redhat.com \
/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.