From: "Suzuki K. Poulose" <suzuki@in.ibm.com>
To: linux-kernel@vger.kernel.org
Cc: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com>,
Christoph Hellwig <hch@lst.de>,
Masami Hiramatsu <mhiramat@redhat.com>,
Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
Daisuke HATAYAMA <d.hatayama@jp.fujitsu.com>,
Andi Kleen <andi@firstfloor.org>,
Roland McGrath <roland@redhat.com>,
Amerigo Wang <amwang@redhat.com>,
Linus Torvalds <torvalds@linux-foundation.org>,
KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Oleg Nesterov <oleg@redhat.com>,
Andrew Morton <akpm@linux-foundation.org>,
"Suzuki K. Poulose" <suzuki@in.ibm.com>
Subject: [RFC] [Patch 0/21] Non disruptive application core dump infrastructure
Date: Tue, 14 Dec 2010 15:22:59 +0530 [thread overview]
Message-ID: <20101214152259.67896960@suzukikp> (raw)
Hi all,
This is series of patches implementing an infrastructure for capturing the core
of an application without disrupting its process semantics.
The infrastructure makes use of the freezer subsystem in kernel to freeze the
threads and then collect the information to generate the core.
The interface is provided by a /proc/pid/core file, reading which can give the
ELF formatted core of the process with "pid". The interface supports "seek"
operation on the fd, allowing the dumper to have control on the data that is
being dumped. Also it allows the user to store the dump at any location.
The current implementation supports both native as well as the compat ELF
tasks.
An open() call to the /proc/pid/core will try to freeze the threads in the
process and the read() requests will dynamically generate the contents for the
core file. The ELF header & Program Headers are stored in a kernel buffer to
allow us to map the fpos to the required data section.
In case a thread is not frozen within a time interval, after issuing the freeze
request, we fill the register state information with 0's to indicate we could
not capture the data.
A close() would kick the threads out of the refrigerator().
The implementation reuses some of the existing ELF core generation code by
exporting them. Some of the code common to both native and compat ELF class
support has been moved to a common place, elfcore-common.c. Also some of the
reusable functions, specific to the ELF class handling, has been made global,
after renaming the compat version of the same.
We also added a new API -elf_core_copy_extra_phdrs() -for "reading" the arch
specific program headers, versus the existing elf_core_write_extra_phdrs().
Patches 1 to 9 deals with re-arranging the ELF code to be reusable by the
infrastructure.
Patches 10 to 21 implements the infrastructure.
TODO: Add support for collecting the arch specific notes, currently used only
by Cell platform.
Please let me know your review comments / thoughts.
arch/ia64/kernel/elfcore.c | 34 ++
arch/um/sys-i386/elfcore.c | 32 ++
fs/Makefile | 1
fs/binfmt_elf.c | 162 +------------
fs/compat_binfmt_elf.c | 7
fs/elfcore-common.c | 138 +++++++++++
fs/proc/Makefile | 2
fs/proc/base.c | 1
fs/proc/gencore-compat-elf.c | 61 ++++
fs/proc/gencore-elf.c | 479+++++++++++++++++++++++++++++++++++++++
fs/proc/gencore.c | 297++++++++++++++++++++++++
fs/proc/gencore.h | 71 +++++
fs/proc/internal.h | 1
include/linux/elfcore-internal.h | 73 +++++
include/linux/elfcore.h | 3
include/linux/freezer.h | 12
kernel/elfcore.c | 6
kernel/power/process.c | 9
18 files changed, 1241 insertions(+), 148 deletions(-)
Thanks
Suzuki
next reply other threads:[~2010-12-14 9:53 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-14 9:52 Suzuki K. Poulose [this message]
2010-12-14 9:54 ` [Patch 1/21] Reuse freezable() predicate Suzuki K. Poulose
2010-12-14 9:57 ` [Patch 2/21] Create elfcore-common.c for ELF class independent core generation helpers Suzuki K. Poulose
2010-12-14 10:00 ` [Patch 3/21] Make vma_dump_size() generic Suzuki K. Poulose
2010-12-14 15:53 ` Oleg Nesterov
2010-12-14 10:01 ` [Patch 4/21] Make fill_psinfo generic Suzuki K. Poulose
2010-12-14 15:53 ` Oleg Nesterov
2010-12-14 15:55 ` Linus Torvalds
2010-12-15 2:22 ` Suzuki K. Poulose
2010-12-14 10:03 ` [Patch 5/21] Rename compat versions of the reusable core generation routines Suzuki K. Poulose
2010-12-14 15:57 ` Oleg Nesterov
2010-12-15 2:30 ` Suzuki K. Poulose
2010-12-14 10:04 ` [Patch 6/21] Export the reusable ELF " Suzuki K. Poulose
2010-12-14 10:05 ` [Patch 7/21] Define API for reading arch specif Program Headers for Core Suzuki K. Poulose
2010-12-14 10:08 ` [Patch 8/21] ia64 Implementation of elf_core_copy_extra_phdrs() Suzuki K. Poulose
2010-12-14 10:09 ` [Patch 9/21] UML (i386) " Suzuki K. Poulose
2010-12-14 10:11 ` [Patch 10/21] Create /proc/pid/core entry Suzuki K. Poulose
2010-12-14 10:36 ` Cong Wang
2010-12-14 15:02 ` Suzuki K. Poulose
2010-12-14 10:12 ` [Patch 11/21] Track the core generation requests Suzuki K. Poulose
2010-12-14 10:51 ` Alexey Dobriyan
2010-12-14 16:04 ` Oleg Nesterov
2010-12-14 10:13 ` [Patch 12/21] Check if the process is an ELF executable Suzuki K. Poulose
2010-12-14 16:05 ` Oleg Nesterov
2010-12-14 10:15 ` [Patch 13/21] Freeze / Thaw threads Suzuki K. Poulose
2010-12-14 16:17 ` Oleg Nesterov
2010-12-14 10:16 ` [Patch 14/21] Create ELF header Suzuki K. Poulose
2010-12-14 16:24 ` Oleg Nesterov
2010-12-14 10:17 ` [Patch 15/21] Collect ELF Core notes data Suzuki K. Poulose
2010-12-14 16:37 ` Oleg Nesterov
2010-12-14 10:19 ` [Patch 16/21] Wait for threads to freeze Suzuki K. Poulose
2010-12-14 16:42 ` Oleg Nesterov
2010-12-14 10:20 ` [Patch 17/21] Calculate the size of the core file Suzuki K. Poulose
2010-12-14 10:22 ` [Patch 18/21] Generate the data sections for ELF Core Suzuki K. Poulose
2010-12-15 7:19 ` Cong Wang
2010-12-15 12:46 ` Suzuki K. Poulose
2010-12-16 2:14 ` Cong Wang
2010-12-14 10:24 ` [Patch 19/21] Identify the ELF class of the process Suzuki K. Poulose
2010-12-14 10:26 ` [Patch 20/21] Add supporting for compat ELF class data structures Suzuki K. Poulose
2010-12-14 10:27 ` [Patch 21/21] Compat ELF class Core generation support Suzuki K. Poulose
2010-12-14 10:54 ` [RFC] [Patch 0/21] Non disruptive application core dump infrastructure Alexey Dobriyan
2010-12-14 14:59 ` Suzuki K. Poulose
2010-12-14 15:49 ` Linus Torvalds
2010-12-14 16:03 ` Tejun Heo
2010-12-14 16:19 ` Linus Torvalds
2010-12-14 16:28 ` Tejun Heo
2010-12-15 5:34 ` Suzuki K. Poulose
2010-12-15 9:37 ` Tejun Heo
2010-12-15 11:26 ` Suzuki K. Poulose
2010-12-15 11:51 ` Andi Kleen
2010-12-16 7:57 ` Suzuki K. Poulose
2010-12-15 1:04 ` KAMEZAWA Hiroyuki
2010-12-15 5:24 ` Suzuki K. Poulose
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=20101214152259.67896960@suzukikp \
--to=suzuki@in.ibm.com \
--cc=akpm@linux-foundation.org \
--cc=amwang@redhat.com \
--cc=ananth@in.ibm.com \
--cc=andi@firstfloor.org \
--cc=d.hatayama@jp.fujitsu.com \
--cc=hch@lst.de \
--cc=jeremy.fitzhardinge@citrix.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mhiramat@redhat.com \
--cc=oleg@redhat.com \
--cc=roland@redhat.com \
--cc=torvalds@linux-foundation.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®