All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC] [Patch 0/21] Non disruptive application core dump infrastructure
@ 2010-12-14  9:52 Suzuki K. Poulose
  2010-12-14  9:54 ` [Patch 1/21] Reuse freezable() predicate Suzuki K. Poulose
                   ` (23 more replies)
  0 siblings, 24 replies; 53+ messages in thread
From: Suzuki K. Poulose @ 2010-12-14  9:52 UTC (permalink / raw)
  To: linux-kernel
  Cc: Jeremy Fitzhardinge, Christoph Hellwig, Masami Hiramatsu,
	Ananth N Mavinakayanahalli, Daisuke HATAYAMA, Andi Kleen,
	Roland McGrath, Amerigo Wang, Linus Torvalds, KAMEZAWA Hiroyuki,
	KOSAKI Motohiro, Oleg Nesterov, Andrew Morton, Suzuki K. Poulose

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

^ permalink raw reply	[flat|nested] 53+ messages in thread

end of thread, other threads:[~2010-12-16  7:57 UTC | newest]

Thread overview: 53+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-14  9:52 [RFC] [Patch 0/21] Non disruptive application core dump infrastructure Suzuki K. Poulose
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

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.