aboutsummaryrefslogtreecommitdiffstats
path: root/fs/driverfs
diff options
context:
space:
mode:
authorIngo Molnar <mingo@elte.hu>2002-11-05 04:25:29 -0800
committerIngo Molnar <mingo@elte.hu>2002-11-05 04:25:29 -0800
commitd89f3847def4a55a84cc42809994bde2a148e9e0 (patch)
tree44e264429c0e2f71167e77ee272e22c40d6acef8 /fs/driverfs
parent5a7728c6d3eb83df9d120944cca4cf476dd326a1 (diff)
downloadtip-d89f3847def4.tar.gz
[PATCH] thread-aware coredumps, 2.5.43-C3
Notice: this object is not reachable from any branch.
This is the second iteration of thread-aware coredumps. Changes: - Ulrich Drepper has reviewed the data structures and checked actual coredumps via readelf - everything looks fine and according to the spec. - a serious bug has been fixed in the thread-state dumping code - it was still based on the 2.4 assumption that the task struct points to the kernel stack - it's task->thread_info in 2.5. This bug caused bogus register info to be filled in for threads. - properly wait for all threads that share the same MM to serialize with the coredumping thread. This is CLONE_VM based, not tied to CLONE_THREAD and/or signal semantics, ie. old-style (or different-style) threaded apps will be properly stopped as well. The locking might look a bit complex, but i wanted to keep the __exit_mm() overhead as low as possible. It's not quite trivial to get these bits right, because 'sharing the MM' is detached from signals semantics, so we cannot rely on broadcast-kill catching all threads. So zap_threads() iterates through every thread and zaps those which were left out. (There's a minimal race left in where a newly forked child might escape the attention of zap_threads() - this race is fixed by the OOM fixes in the mmap-speedup patch.) - fill_psinfo() is now called with the thread group leader, for the coredump to get 'process' state. - initialize the elf_thread_status structure with zeroes. the IA64 ELF bits are not included, yet, to reduce complexity of the patch. The patch has been tested on x86 UP and SMP.
Notice: this object is not reachable from any branch.
Diffstat (limited to 'fs/driverfs')
0 files changed, 0 insertions, 0 deletions