Oleg Nesterov
b03023ecbd
coredump: add %i/%I in core_pattern to report the tid of the crashed thread
...
format_corename() can only pass the leader's pid to the core handler,
but there is no simple way to figure out which thread originated the
coredump.
As Jan explains, this also means that there is no simple way to create
the backtrace of the crashed process:
As programs are mostly compiled with implicit gcc -fomit-frame-pointer
one needs program's .eh_frame section (equivalently PT_GNU_EH_FRAME
segment) or .debug_frame section. .debug_frame usually is present only
in separate debug info files usually not even installed on the system.
While .eh_frame is a part of the executable/library (and it is even
always mapped for C++ exceptions unwinding) it no longer has to be
present anywhere on the disk as the program could be upgraded in the
meantime and the running instance has its executable file already
unlinked from disk.
One possibility is to echo 0x3f >/proc/*/coredump_filter and dump all
the file-backed memory including the executable's .eh_frame section.
But that can create huge core files, for example even due to mmapped
data files.
Other possibility would be to read .eh_frame from /proc/PID/mem at the
core_pattern handler time of the core dump. For the backtrace one needs
to read the register state first which can be done from core_pattern
handler:
ptrace(PTRACE_SEIZE, tid, 0, PTRACE_O_TRACEEXIT)
close(0); // close pipe fd to resume the sleeping dumper
waitpid(); // should report EXIT
PTRACE_GETREGS or other requests
The remaining problem is how to get the 'tid' value of the crashed
thread. It could be read from the first NT_PRSTATUS note of the core
file but that makes the core_pattern handler complicated.
Unfortunately %t is already used so this patch uses %i/%I.
Automatic Bug Reporting Tool (https://github.com/abrt/abrt/wiki/overview )
is experimenting with this. It is using the elfutils
(https://fedorahosted.org/elfutils/ ) unwinder for generating the
backtraces. Apart from not needing matching executables as mentioned
above, another advantage is that we can get the backtrace without saving
the core (which might be quite large) to disk.
[mmilata@redhat.com: final paragraph of changelog]
Signed-off-by: Jan Kratochvil <jan.kratochvil@redhat.com>
Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Cc: Alexander Viro <viro@zeniv.linux.org.uk>
Cc: Denys Vlasenko <dvlasenk@redhat.com>
Cc: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Mark Wielaard <mjw@redhat.com>
Cc: Martin Milata <mmilata@redhat.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-10-14 02:18:21 +02:00
..
ABI
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mpe/linux
2014-10-11 20:34:00 -04:00
accounting
Documentation: use subdir-y to avoid unnecessary built-in.o files
2014-09-26 11:02:55 +02:00
acpi
ACPI / documentation: Remove reference to acpi_platform_device_ids from enumeration.txt
2014-07-12 00:07:05 +02:00
aoe
arm
ARM: SoC DT updates for 3.18
2014-10-08 17:22:23 -04:00
arm64
KVM/ARM New features for 3.17 include:
2014-08-05 09:47:45 +02:00
auxdisplay
Documentation: use subdir-y to avoid unnecessary built-in.o files
2014-09-26 11:02:55 +02:00
backlight
backlight: lp855x_bl: support new LP8555 device
2013-11-13 12:09:14 +09:00
blackfin
Documentation: add makefiles for more targets
2014-09-26 11:02:56 +02:00
block
doc: queue-sysfs: minor fixes
2014-08-28 14:47:22 +02:00
blockdev
zram: report maximum used memory
2014-10-09 22:26:02 -04:00
bus-devices
cdrom
cgroups
cpuset: PF_SPREAD_PAGE and PF_SPREAD_SLAB should be atomic flags
2014-09-24 22:16:06 -04:00
connector
w1: optional bundling of netlink kernel replies
2014-05-27 13:56:21 -07:00
console
cpu-freq
intel_pstate: Update documentation of {max,min}_perf_pct sysfs files
2014-07-07 01:22:19 +02:00
cpuidle
cris
crypto
development-process
device-mapper
dm switch: efficiently support repetitive patterns
2014-08-01 12:30:37 -04:00
devicetree
rtc: bq32000: add trickle charger device tree binding
2014-10-14 02:18:18 +02:00
DocBook
Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-13 15:51:40 +02:00
driver-model
PCI changes for the v3.18 merge window:
2014-10-09 15:03:49 -04:00
dvb
[media] get_dvb_firmware: Update firmware of ITEtech IT9135
2014-09-21 17:03:04 -03:00
early-userspace
EDID
drm: Add 800x600 (SVGA) screen resolution to the built-in EDIDs
2014-05-26 12:53:40 +10:00
extcon
extcon: fix switch class porting guide (Documentation)
2014-01-07 11:54:28 +09:00
fault-injection
fb
doc: spelling error changes
2014-05-05 15:32:05 +02:00
filesystems
autofs: the documentation I wanted to read
2014-10-14 02:18:17 +02:00
firmware_class
doc: fix minor typos in firmware_class README
2014-07-17 18:43:40 -07:00
fmc
FMC: make eeprom attribute writable
2014-02-28 15:12:08 -08:00
frv
gpio
This is the bulk of GPIO changes for the v3.18 development
2014-10-09 14:58:15 -04:00
hid
HID: uhid: update documentation
2014-08-25 03:28:09 -05:00
hwmon
Immutable branch between MFD, HWMON, LEDs and Watchdog for v3.18
2014-09-24 09:25:06 -07:00
i2c
Documentation: i2c: rename variable "register" to "reg"
2014-09-07 15:21:13 -07:00
i2o
ia64
Documentation: use subdir-y to avoid unnecessary built-in.o files
2014-09-26 11:02:55 +02:00
ide
Documentation/: update 00-INDEX files
2014-02-10 16:01:40 -08:00
infiniband
IB/mad: add new ioctl to ABI to support new registration options
2014-08-10 20:36:00 -07:00
input
Merge branch 'next' into for-linus
2014-08-06 23:36:12 -07:00
ioctl
cxl: Add documentation for userspace APIs
2014-10-08 20:16:19 +11:00
isdn
ja_JP
Documentation: Update stable address in Chinese and Japanese translations
2014-04-16 14:13:27 -07:00
kbuild
Merge branch 'misc' of git://git.kernel.org/pub/scm/linux/kernel/git/mmarek/kbuild
2014-08-14 11:14:29 -06:00
kdump
Documentation/kdump/kdump.txt: add ARM description
2014-08-29 16:28:17 -07:00
ko_KR
Documentation: HOWTO: Updates on subsystem trees, patchwork, -next (vs. -mm) in ko_KR
2014-01-08 15:32:51 -08:00
laptops
Documentation: update .gitignore files
2014-09-26 11:02:59 +02:00
leds
Documentation/: update 00-INDEX files
2014-02-10 16:01:40 -08:00
locking
Merge branch 'locking-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-13 15:51:40 +02:00
m68k
Documentation/: update 00-INDEX files
2014-02-10 16:01:40 -08:00
memory-devices
metag
mic
Documentation: update include path for mpssd
2014-10-03 15:48:20 +02:00
mips
Documentation: au1xxx-ide.c has moved
2014-08-26 09:35:53 +02:00
misc-devices
Documentation: use subdir-y to avoid unnecessary built-in.o files
2014-09-26 11:02:55 +02:00
mmc
mn10300
mtd
MTD updates for 3.16:
2014-06-11 08:35:34 -07:00
namespaces
netlabel
networking
Documentation: replace __sk_run_filter with __bpf_prog_run
2014-10-10 15:10:50 -04:00
nfc
parisc
PCI
doc: replace "practise" with "practice" in Documentation
2014-06-19 15:28:56 +02:00
pcmcia
Documentation: use subdir-y to avoid unnecessary built-in.o files
2014-09-26 11:02:55 +02:00
phy
phy: Add new Exynos USB 2.0 PHY driver
2014-03-08 12:39:44 +05:30
platform
Documentation: Add list of laptop models supported by the Compal driver
2014-06-10 19:11:06 -04:00
power
Merge branch 'pm-genirq'
2014-10-07 01:17:21 +02:00
powerpc
cxl: Add documentation for userspace APIs
2014-10-08 20:16:19 +11:00
pps
prctl
Documentation: update .gitignore files
2014-09-26 11:02:59 +02:00
pti
ptp
Documentation: update .gitignore files
2014-09-26 11:02:59 +02:00
rapidio
rapidio/tsi721_dma: rework scatter-gather list handling
2014-08-08 15:57:24 -07:00
RCU
documentation: Add verbiage on RCU-tasks stall warning messages
2014-09-07 16:27:28 -07:00
s390
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial into next
2014-06-04 08:50:34 -07:00
scheduler
Documentation/scheduler/sched-deadline.txt: Add minimal main() appendix
2014-09-16 10:23:45 +02:00
scsi
megaraid_sas: Version and Changelog update
2014-09-16 09:09:54 -07:00
security
Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
2014-10-12 10:13:55 -04:00
serial
TTY/Serial driver patches for 3.18-rc1
2014-10-08 06:52:11 -04:00
sh
sound
ALSA: virtuoso: add Xonar Essence STX II support
2014-08-04 15:20:48 +02:00
spi
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/doc
2014-10-07 21:14:57 -04:00
sysctl
coredump: add %i/%I in core_pattern to report the tid of the crashed thread
2014-10-14 02:18:21 +02:00
target
thermal
drm/nouveau/doc: update the thermal documentation
2014-06-17 14:50:17 +10:00
timers
Documentation: update .gitignore files
2014-09-26 11:02:59 +02:00
tpm
trace
mm: trace-vmscan-postprocess.pl: report the number of file/anon pages respectively
2014-08-06 18:01:20 -07:00
usb
usb: hub: rename khubd to hub_wq in documentation and comments
2014-09-23 22:33:19 -07:00
vDSO
Documentation: disable vdso_test to avoid breakage with old glibc
2014-09-26 11:03:00 +02:00
video4linux
media updates for v3.18-rc1
2014-10-10 22:04:49 -04:00
virtual
Changes for KVM for arm/arm64 for 3.18
2014-09-27 11:03:33 +02:00
vm
mm: mark remap_file_pages() syscall as deprecated
2014-06-06 16:08:17 -07:00
w1
w1: new w1_ds2406 driver
2014-06-19 17:45:14 -07:00
watchdog
Documentation: use subdir-y to avoid unnecessary built-in.o files
2014-09-26 11:02:55 +02:00
wimax
x86
x86/doc: Fix the 'tlb_single_page_flush_ceiling' sysconfig path
2014-08-10 09:09:26 +02:00
xtensa
xtensa: remap io area defined in device tree
2014-01-15 00:25:14 +04:00
zh_CN
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
2014-08-06 21:03:53 -07:00
00-INDEX
locking/Documentation: Move locking related docs into Documentation/locking/
2014-08-13 10:32:03 +02:00
applying-patches.txt
Documentation: change "&" to "and" in Documentation/applying-patches.txt
2014-09-26 11:10:11 +02:00
assoc_array.txt
KEYS: Fix multiple key add into associative array
2013-12-02 11:24:18 +00:00
atomic_ops.txt
arch,doc: Convert smp_mb__*()
2014-04-18 14:20:48 +02:00
bad_memory.txt
basic_profiling.txt
bcache.txt
binfmt_misc.txt
binfmt_misc: touch up documentation a bit
2014-10-14 02:18:16 +02:00
braille-console.txt
bt8xxgpio.txt
btmrvl.txt
BUG-HUNTING
bus-virt-phys-mapping.txt
cachetlb.txt
Changes
Documentation: remove obsolete pcmcia-cs from Changes
2014-09-09 10:35:58 +02:00
circular-buffers.txt
documentation: Update circular buffer for load-acquire/store-release
2013-12-03 10:08:57 -08:00
clk.txt
clk: Improve clk_ops documentation
2014-05-12 17:08:33 -07:00
coccinelle.txt
CodingStyle
CodingStyle: fix a minor typo
2014-08-26 09:35:54 +02:00
cpu-hotplug.txt
Doc/cpu-hotplug: Specify race-free way to register CPU hotplug callbacks
2014-03-20 13:43:40 +01:00
cpu-load.txt
cputopology.txt
crc32.txt
dcdbas.txt
debugging-modules.txt
debugging-via-ohci1394.txt
firewire: revert to 4 GB RDMA, fix protocols using Memory Space
2014-05-29 15:50:30 +02:00
dell_rbu.txt
devices.txt
Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
2014-04-04 09:50:07 -07:00
digsig.txt
DMA-API-HOWTO.txt
Documentation: correct parameter error for dma_mapping_error
2014-09-26 11:22:29 +02:00
DMA-API.txt
DMA-API: Capitalize "CPU" consistently
2014-05-26 17:28:27 -06:00
DMA-attributes.txt
doc: spelling error changes
2014-05-05 15:32:05 +02:00
dma-buf-sharing.txt
Documentation/dma-buf-sharing.txt: update API descriptions
2014-08-28 11:57:24 +05:30
DMA-ISA-LPC.txt
DMA-API: Clarify physical/bus address distinction
2014-05-20 16:54:21 -06:00
dmaengine.txt
dmaengine: Clarify device parameter for dma_sync_*_for_*()
2014-07-25 14:21:23 +05:30
dmatest.txt
dmatest: add a 'wait' parameter
2013-11-14 11:04:40 -08:00
dontdiff
Documentation: LLVMLinux: Update Documentation/dontdiff
2014-04-09 13:44:34 -07:00
dynamic-debug-howto.txt
doc: spelling error changes
2014-05-05 15:32:05 +02:00
edac.txt
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial into next
2014-06-04 08:50:34 -07:00
efi-stub.txt
doc: arm64: add description of EFI stub support
2014-04-30 19:57:05 +01:00
eisa.txt
email-clients.txt
Documentation: add section about git to email-clients.txt
2014-06-29 13:38:33 -07:00
flexible-arrays.txt
futex-requeue-pi.txt
doc: fix double words
2014-03-21 13:16:58 +01:00
gcov.txt
gcov: compile specific gcov implementation based on gcc version
2013-11-13 12:09:34 +09:00
highuid.txt
HOWTO
Documentation: HOWTO: Update broken links to tpp
2013-12-10 23:09:08 -08:00
hsi.txt
Documentation: HSI: Add some general description for the HSI subsystem
2014-05-04 09:49:46 +02:00
hw_random.txt
hwspinlock.txt
init.txt
initrd.txt
Intel-IOMMU.txt
intel_txt.txt
io-mapping.txt
doc: fix some typos
2013-12-02 14:48:28 +01:00
io_ordering.txt
iostats.txt
IPMI.txt
IRQ-affinity.txt
IRQ-domain.txt
genirq: Improve documentation to match current implementation
2014-05-27 10:16:44 +02:00
IRQ.txt
irqflags-tracing.txt
asm/system.h: clean asm/system.h from docs
2014-04-07 16:36:11 -07:00
isapnp.txt
java.txt
Documentation: update java sample wrapper for java 7
2014-05-25 12:39:00 -07:00
kernel-doc-nano-HOWTO.txt
kernel-docs.txt
kernel-parameters.txt
Merge branch 'core-rcu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-13 15:44:12 +02:00
kernel-per-CPU-kthreads.txt
Documentation/kernel-per-CPU-kthreads.txt: Workqueue affinity
2014-02-17 14:56:08 -08:00
kmemcheck.txt
doc: fix double words
2014-03-21 13:16:58 +01:00
kmemleak.txt
Documentation: kmemleak: correct spelling mistake
2014-08-26 09:35:53 +02:00
kobject.txt
kobject: remove kset from sysfs immediately in kset_unregister()
2013-12-07 21:20:11 -08:00
kprobes.txt
kprobes: Introduce NOKPROBE_SYMBOL() macro to maintain kprobes blacklist
2014-04-24 10:02:56 +02:00
kref.txt
ldm.txt
local_ops.txt
lockup-watchdogs.txt
lockup-watchdogs: Fix a typo
2014-08-26 09:35:52 +02:00
logo.gif
logo.txt
lzo.txt
Documentation: lzo: document part of the encoding
2014-09-28 11:08:00 +02:00
magic-number.txt
Documentation/serial: Delete obsolete driver documentation
2014-04-16 14:20:34 -07:00
Makefile
Documentation: add makefiles for more targets
2014-09-26 11:02:56 +02:00
ManagementStyle
md.txt
doc: fix some typos in documentations
2013-12-02 14:45:19 +01:00
media-framework.txt
memory-barriers.txt
memory-barriers: Fix description of 2-legged-if-based control dependencies
2014-09-07 16:15:53 -07:00
memory-hotplug.txt
memory-hotplug: add sysfs valid_zones attribute
2014-10-09 22:25:52 -04:00
module-signing.txt
Nothing major: the stricter permissions checking for sysfs broke
2014-04-06 09:38:07 -07:00
mono.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt
panic: add TAINT_SOFTLOCKUP
2014-08-08 15:57:24 -07:00
padata.txt
parport-lowlevel.txt
parport.txt
percpu-rw-semaphore.txt
phy.txt
phy: core: Let node ptr of PHY point to PHY and not of PHY provider
2014-07-22 12:46:11 +05:30
pi-futex.txt
pinctrl.txt
pinctrl: clean up after enable refactoring
2014-09-04 10:05:07 +02:00
pnp.txt
preempt-locking.txt
printk-formats.txt
doc: printk-formats: do not mention casts for u64/s64
2014-05-05 15:32:42 +02:00
pwm.txt
pwm: modify PWM_LOOKUP to initialize all struct pwm_lookup members
2014-05-21 11:19:36 +02:00
ramoops.txt
rbtree.txt
doc: spelling error changes
2014-05-05 15:32:05 +02:00
remoteproc.txt
rfkill.txt
doc: spelling error changes
2014-05-05 15:32:05 +02:00
robust-futex-ABI.txt
Documentation/robust-futex-API: Count properly to 4
2013-11-30 14:08:28 +01:00
robust-futexes.txt
doc: spelling error changes
2014-05-05 15:32:05 +02:00
rpmsg.txt
rtc.txt
SAK.txt
SecurityBugs
serial-console.txt
sgi-ioc4.txt
SM501.txt
smsc_ece1099.txt
sparse.txt
stable_api_nonsense.txt
stable_kernel_rules.txt
stable_kernel_rules: Add pointer to netdev-FAQ for network patches
2014-07-09 15:54:27 -07:00
static-keys.txt
doc: fix some typos in documentations
2013-12-02 14:45:19 +01:00
SubmitChecklist
SubmittingDrivers
doc: SubmittingPatches: remove dead link, kerneltrap.org no longer works
2014-06-19 15:15:27 +02:00
SubmittingPatches
Documentation: new page link in SubmittingPatches
2014-09-07 15:21:13 -07:00
svga.txt
sysfs-rules.txt
Documentation/sysfs-rules.txt: Add device attribute error code documentation
2014-09-19 14:44:51 -07:00
sysrq.txt
this_cpu_ops.txt
Docs: this_cpu_ops: remove redundant add forms
2014-09-26 11:03:00 +02:00
unaligned-memory-access.txt
ether_addr_equal: Optimize implementation, remove unused compare_ether_addr
2013-12-06 16:37:43 -05:00
unicode.txt
unshare.txt
vfio.txt
drivers/vfio: EEH support for VFIO PCI device
2014-08-05 15:28:48 +10:00
VGA-softcursor.txt
vgaarbiter.txt
video-output.txt
vme_api.txt
VME: Rename vme_slot_get to avoid confusion with reference counting
2013-12-03 11:15:58 -08:00
volatile-considered-harmful.txt
workqueue.txt
xillybus.txt
xillybus: Move out of staging
2014-09-23 23:44:16 -07:00
xz.txt
zorro.txt
zorro/UAPI: Disintegrate include/linux/zorro*.h
2013-11-26 11:09:08 +01:00