Commit Graph

553 Commits

Author SHA1 Message Date
Elliott Hughes bab3354ede Show the number of VMAs in the tombstone.
Tombstones (especially ones with lots of VMAs) are regularly truncated.
We can at least show the number of VMAs, though, for anyone interested
in knowing whether they got close to the default 64Ki limit.

Bug: http://b/66911122
Bug: 64709603 (presubmit balking at the line above)
Test: ran crasher, examined tombstone

(cherry picked from commit 868d39a82f)

Change-Id: I286db66f28f132307d573dbe5164efc969dc6ddc
2017-09-26 17:24:39 -07:00
Josh Gao 0aeeda0024 debuggerd_fallback: print maps.
Bug: http://b/63400743
Bug: http://b/65590288
Bug: 64709603 (presubmit balking at the line above)
Test: killall -ABRT media.codec
Change-Id: I58e47dcd8e99ad7a5945604c27876dd01259e501
Merged-In: I58e47dcd8e99ad7a5945604c27876dd01259e501
(cherry picked from commit fdc95c9670)
2017-09-13 18:33:34 -07:00
Josh Gao 68995633a9 debuggerd_handler: print pid and process name.
am: 30b69aab46

Change-Id: Iac44ddf6f6b4a1d4e4f3f8132280c437fdb7e43e
2017-08-14 18:06:26 +00:00
Josh Gao 30b69aab46 debuggerd_handler: print pid and process name.
Bug: http://b/64483618
Test: manual

(cherry picked from commit 81e6c0b613)

Change-Id: Icd957ccd21c2ce072f4cdf973b94de08fb0c5567
2017-08-11 22:01:36 -07:00
Narayan Kamath ed218dd556 DO NOT MERGE ANYWHERE tombstoned: Avoid creating the tombstoned_java_trace socket.
Its use is hard-wired off by default. This fixes an SELinux
denial when init tries to create it. We see a denail because
the SELinux aspects of these changes have been reverted on DR
because it's the same API level as oc-dev.

Test: manual
Bug: 63350870

Change-Id: I8b18a25bc14ad9cf79825596ce70483530dd3a8b
2017-07-25 13:17:01 +01:00
Christopher Ferris 718760c145 Merge "Cleanup the libbacktrace interface a bit." am: e3d470b81d am: 011f61f39d
am: 8c632cb59a

Change-Id: I8724717bc0fe798337a36ec9f1f07405207f3a2a
2017-07-20 04:08:49 +00:00
Christopher Ferris 96722b0fa4 Cleanup the libbacktrace interface a bit.
- Change the field name load_base to load_bias (which is what it really is).
- Add a rel_pc field so that callers do not need to compute it themselves.
- Remove the BacktraceMap::GetRelativePc() since nobody should need to
  compute this themselves.

Bug: 23762183

Test: Compiles and unit tests pass (debuggerd, libbacktrace).
Change-Id: I2cb579767120adf08c407a58f3c487ee3f2b45fc
2017-07-19 15:36:32 -07:00
Josh Gao bf304469ba Merge "crasher: add a case that leaks until OOM-kill." am: f610d6db82 am: 0cb3d254a2
am: 914e341741

Change-Id: Ibf118d9b85a5a8cb4fd195ebff5187b4a28a8583
2017-07-14 00:07:04 +00:00
Josh Gao 399b4ee21e crasher: add a case that leaks until OOM-kill.
Bug: http://b/63143027
Test: adb shell crasher leak
Change-Id: I6e4105972ef3d86430d0f332938f5fd33ebae100
2017-07-13 14:00:26 -07:00
Nick Kralevich 4192d74a83 Merge "Remove unnecessary SELinux dependencies" am: 22de50d351 am: e9b9b10c58
am: 0056e6bccc

Change-Id: Id160e23a6bd53238ad279bb5b28e7ca8a08c0805
2017-07-01 16:49:35 +00:00
Nick Kralevich 33391dad15 Remove unnecessary SELinux dependencies
These are unused.

Test: code compiles.
Change-Id: Idd707dfcc8f6daac3a489c791ecc364841cf31f9
2017-07-01 07:41:48 -07:00
Elliott Hughes 36a90f0569 Allow configuration of the number of tombstones.
(cherry picked from commit 35bb6d2a89)

Bug: http://b/62810514
Test: altered the property, got more tombstones
Change-Id: I35cd3a5582306d9fff5b74f193ef739a8f09bbf8
2017-06-27 22:19:43 -07:00
Josh Gao 639dcaddeb Merge changes I5c6bf2a5,I20a337bb am: 7f81b2af61 am: 14e36421db
am: 877708fcf1

Change-Id: I34dc3524ad55f76e4bad9195ddf5777cf4b53f45
2017-06-28 00:06:23 +00:00
Josh Gao 0915f23d5f debuggerd: diagnostics for dumps that are guaranteed to fail.
Print diagnostics when the user requests a dump that is guaranteed to
fail, such as trying to dump a process you can't send a signal to.

Bug: http://b/63008395
Change-Id: I5c6bf2a5751f858e0534990b8d2ab6932eb9f11d
Test: manually tested
2017-06-27 15:06:57 -07:00
Elliott Hughes 97f2fa94a5 Merge "Allow configuration of the number of tombstones." am: 3e8d923276 am: 216ac36534
am: 03cec0a7db

Change-Id: Ifb9389c6252139bb656c1dd991261d9d8b6430e6
2017-06-27 21:06:57 +00:00
Elliott Hughes 3e8d923276 Merge "Allow configuration of the number of tombstones." 2017-06-27 20:57:08 +00:00
Elliott Hughes 35bb6d2a89 Allow configuration of the number of tombstones.
Bug: http://b/62810514
Test: altered the property, got more tombstones
Change-Id: Iba8089915fa715658d2dfecb076c6a61321243bd
2017-06-26 14:00:00 -07:00
Jeff Vander Stoep d47d328b41 Merge "Revert "crash_dump: during early boot, output to kmsg on userdebug."" into oc-dr1-dev
am: 75a32dead5

Change-Id: Ia893832c1428858afd8d8726a789a5989dafa9a0
2017-06-23 23:01:27 +00:00
TreeHugger Robot 75a32dead5 Merge "Revert "crash_dump: during early boot, output to kmsg on userdebug."" into oc-dr1-dev 2017-06-23 22:45:48 +00:00
Jeff Vander Stoep 5fdc4cc746 Revert "crash_dump: during early boot, output to kmsg on userdebug."
This reverts commit bf2dd48241.

Addresses:
avc: denied { relabelto } for name="kmsg_debug" dev="tmpfs" ino=10642
scontext=u:r:init:s0 tcontext=u:object_r:device:s0 tclass=chr_file

Bug: 62101480, 35197529
Test: build and boot device. Verify selinux denial no longer occurs.
Change-Id: I28ce16f50eec20ef15c1721f41b66f22a84e7cca
2017-06-23 13:37:54 -07:00
Andreas Gampe 0ecc88bb28 Debuggerd: Fix debuggerd_test
Follow-up to commit 695713e931f0436aca56be9c0dacf2a5dd4e56e7 in
bionic. Change expectations of the abort callstack.

(cherry picked from commit 26cbafb892)

Bug: 62810360
Merged-In: I350a29ee1713a7ebdd50f2b9bdc2078c671e22c7
Test: mmma system/core/debuggerd
Test: adb shell /data/nativetest/debuggerd_test/debuggerd_test32
Test: adb shell /data/nativetest64/debuggerd_test/debuggerd_test64
Change-Id: I350a29ee1713a7ebdd50f2b9bdc2078c671e22c7
2017-06-23 10:49:19 -07:00
Narayan Kamath 111f351762 Merge "tombstoned: Improve message on java trace completion." 2017-06-23 08:12:51 +00:00
Andreas Gampe 1d873b3512 Debuggerd: Extend crash_dump timeout to 5 seconds
am: 4f5f558d38

Change-Id: I25274053b0b45b00cefbc8d65d5ef271050269b2
2017-06-23 06:22:08 +00:00
Andreas Gampe 4f5f558d38 Debuggerd: Extend crash_dump timeout to 5 seconds
Some processes have lots of threads and minidebug-info. Unwinding
these can take more than the original two seconds.

Bug: 62828735
Test: m
Test: debuggerd_test
Test: adb shell kill -s 6 `pid system_server`
Merged-In: I0041bd01753135ef9d86783a3c6a5cbca1c5bbad
Change-Id: I0041bd01753135ef9d86783a3c6a5cbca1c5bbad
(cherry picked from commit b02851a984)
2017-06-22 23:02:52 -07:00
Andreas Gampe b02851a984 Debuggerd: Extend crash_dump timeout to 5 seconds
Some processes have lots of threads and minidebug-info. Unwinding
these can take more than the original two seconds.

Bug: 62828735
Test: m
Test: debuggerd_test
Test: adb shell kill -s 6 `pid system_server`
Change-Id: I0041bd01753135ef9d86783a3c6a5cbca1c5bbad
2017-06-22 20:19:11 -07:00
Andreas Gampe 26cbafb892 Debuggerd: Fix debuggerd_test
Follow-up to commit 695713e931f0436aca56be9c0dacf2a5dd4e56e7 in
bionic. Change expectations of the abort callstack.

Test: mmma system/core/debuggerd
Test: adb shell /data/nativetest/debuggerd_test/debuggerd_test32
Test: adb shell /data/nativetest64/debuggerd_test/debuggerd_test64
Change-Id: I350a29ee1713a7ebdd50f2b9bdc2078c671e22c7
2017-06-22 20:19:11 -07:00
Jaesung Chung 1dcee84294 Merge "crash_dump: lower THREAD_COUNT in debuggerd_client.race for low-speed devices" 2017-06-23 01:59:28 +00:00
Jaesung Chung cde2b524f1 crash_dump: lower THREAD_COUNT in debuggerd_client.race for low-speed devices
The debuggerd_client.race tests the crash_dump process to finalize the
killed process within 2 seconds. The 2 seconds timeout for finalizing a
process, which has 1024 threads, is bit small for low-speed devices.
This CL lowers the bar in order to make such devices pass the test.
Wraping up 128 threads within 2 seconds looks safe.

Bug: 62600479
Test: debuggerd_test passes on low-speed devices.
Change-Id: I3089415961422e6933405d2c872913273425caff
2017-06-23 08:59:22 +09:00
Narayan Kamath 79dd143e5f tombstoned: Improve message on java trace completion.
For java traces, log the kind of dump as well as the PID of the
completed dump. This makes it easier to correlate dump requests with the
actual file they're written to.

Sample log statement:
E /system/bin/tombstoned: Traces for pid 4737 written to: /data/anr/trace_00

The message for native traces / tombstones remains unchanged because
several tools parse it.

Test: manual
Bug: 32064548

Change-Id: I7b3792dd5ae312ee0bc055c22ec3f7c747152072
2017-06-22 11:04:33 +01:00
Narayan Kamath 07a57f0f28 Merge "tombstoned: change path for traces from "anr_" to "trace_"" 2017-06-22 08:30:42 +00:00
Narayan Kamath b123220dd6 tombstoned: change path for traces from "anr_" to "trace_"
The only case where tombstoned creates files for java traces is
when the process is signalled "by hand" using "shell kill -3", or
by the program itself. Such traces do not correspond to an ANR, so
name those files "trace_XX".

When dumpstate / system_server want to dump java traces, they set up
a tombstoned intercept and manage the lifetime of any associated file
that themselves.

Bug: 32064548
Test: manual, debuggerd_test
Change-Id: I97006ec7c0cd35de4b9564f535e77af846cc3891
2017-06-21 18:00:09 +01:00
Elliott Hughes 336a52e00c Decode ptrace-induced SIGTRAP si_code values.
Example:

  signal 5 (SIGTRAP), code -32763 (PTRACE_EVENT_STOP), fault addr 0x274e00005fb3

I'm tempted to say that %d isn't the best choice for si_code, but as long as
we're fully decoding all the values, I don't think it matters.

Bug: http://b/62856172
Test: manual debuggerd run
Change-Id: Ieeca690828e1e12f4162bbadece53f4aa7b9537a
2017-06-21 08:45:33 -07:00
Jaesung Chung 58778e138e debuggerd_test: find backtrace frame in all lines in CrasherTest
Kernel can use vsyscall for system calls. The vsyscall implementation in
the kernel gives one more depth in the backtrace. It leads to failures
on CrasherTest. This CL makes tests find a system call frame not only in
the first line but also in all lines on the backtrace.

Bug: 62600694
Test: passes all CrasherTests.
Change-Id: Ice383bb94db097e7e9a9e4f74d8fa5ecc528122a
2017-06-16 19:16:50 +09:00
Josh Gao 550f3bf328 Merge "Revert "crash_dump: defer pausing threads until we're ready."" 2017-06-13 18:22:01 +00:00
Josh Gao 3407d7c80f Revert "crash_dump: defer pausing threads until we're ready."
This reverts commit 8a2a2d182a.

Bug: http://b/62572585
Change-Id: Ia4278bca52178eb7b7b28b30d0930b292d97f353
2017-06-13 17:21:12 +00:00
Josh Gao cc25d86de9 tombstoned: log where we're writing the tombstone.
Make it easy to find out where a specific crash's tombstone was written
to by adding a log.

Bug: http://b/62268830
Test: crasher
Merged-In: I1961dfb19f76a42a8448ebafd4be153b73cb6800
Change-Id: I7da49a96bf76dbaa3558ba64539f33283f916d8f
(cherry picked from commit cb68a0317d)
2017-06-12 23:41:45 -07:00
Treehugger Robot 87f5432f52 Merge "tombstoned: log where we're writing the tombstone." 2017-06-13 02:47:34 +00:00
Treehugger Robot 66e1a1e3e2 Merge changes Id7ab0464,Ic2a212be
* changes:
  crash_dump: defer pausing threads until we're ready.
  crash_dump: add tracing.
2017-06-12 23:08:24 +00:00
Josh Gao 3272000382 tombstoned: log where we're writing the tombstone.
Make it easy to find out where a specific crash's tombstone was written
to by adding a log.

Bug: http://b/62268830
Test: crasher
Merged-In: I1961dfb19f76a42a8448ebafd4be153b73cb6800
Change-Id: I1961dfb19f76a42a8448ebafd4be153b73cb6800
(cherry picked from commit cb68a0317d)
2017-06-12 21:02:02 +00:00
Josh Gao cb68a0317d tombstoned: log where we're writing the tombstone.
Make it easy to find out where a specific crash's tombstone was written
to by adding a log.

Bug: http://b/62268830
Test: crasher
Change-Id: I1961dfb19f76a42a8448ebafd4be153b73cb6800
2017-06-12 21:00:59 +00:00
Josh Gao 8a2a2d182a crash_dump: defer pausing threads until we're ready.
Don't pause the threads we're going to dump until after we're about to
fetch their backtraces.

Bug: http://b/62112103
Test: debuggerd_test
Change-Id: Id7ab0464842b35f98f3b3ebc42fb76161d8afbd2
2017-06-07 14:11:28 -07:00
Josh Gao 8bb039073f crash_dump: add tracing.
Add some tracing to figure out where time is going during a dump.

Bug: http://b/62112103
Test: systrace.py sched freq idle bionic
Change-Id: Ic2a212beeb0bb0350b4d9c2cd7a4e70adc97752d
2017-06-07 14:11:06 -07:00
Narayan Kamath ca5e908dd6 tombstoned: turn on java trace support + unit tests.
The SELinux changes that this depends on have now landed.

This change also adds a few lower level unit tests of intercept
functionality.

Test: make; debuggerd_test
Change-Id: I0be5e85e7097e26b71db269c9ed92d9b438bfb28
2017-06-07 18:57:54 +01:00
Josh Gao a1c9e943c0 debuggerd_client: increase pipe buffer size to max.
If a process tries to dump itself (e.g. system_server during ANRs),
crash_dump will block trying to write to its pipe if it's not
sufficiently large. Increase the pipe size to the max, and add a test
to make sure that it's always at least 1MB (the default value).

Bug: http://b/38427757
Test: debuggerd_test
Merged-In: Iddb0cb1e5ce9e687efa9e94c2748a1edfe09f119
Change-Id: Iddb0cb1e5ce9e687efa9e94c2748a1edfe09f119
(cherry picked from commit 5675f3c321)
2017-06-01 16:26:23 -07:00
Josh Gao 8126d2de3e crash_dump: don't notify ActivityManager if it crashed.
Bug: http://b/38427757
Test: killall -ABRT system_server, plus added logging
Merged-In: Ic15e0b0870b1ec08a2f165ad0e5356afed02eece
Change-Id: Ic15e0b0870b1ec08a2f165ad0e5356afed02eece
(cherry picked from commit b0e51e388b)
2017-06-01 16:26:10 -07:00
Josh Gao 615d939974 crash_dump: clear the signal mask.
crash_dump inherits its signal mask from the thread that forked it,
which always has all of its signals blocked, now that sigchain respects
sa_mask.

Manually clear the signal mask, and reduce the timeout to a
still-generous 2 seconds.

Bug: http://b/38427757
Test: manually inserted sleep in crash_dump
Merged-In: If1c9adb68777b71fb19d9b0f47d6998733ed8f52
Change-Id: If1c9adb68777b71fb19d9b0f47d6998733ed8f52
(cherry picked from commit e740250b9d)
2017-06-01 16:25:39 -07:00
Josh Gao 5675f3c321 debuggerd_client: increase pipe buffer size to max.
If a process tries to dump itself (e.g. system_server during ANRs),
crash_dump will block trying to write to its pipe if it's not
sufficiently large. Increase the pipe size to the max, and add a test
to make sure that it's always at least 1MB (the default value).

Bug: http://b/38427757
Test: debuggerd_test
Change-Id: Iddb0cb1e5ce9e687efa9e94c2748a1edfe09f119
2017-06-01 12:42:44 -07:00
Josh Gao b0e51e388b crash_dump: don't notify ActivityManager if it crashed.
Bug: http://b/38427757
Test: killall -ABRT system_server, plus added logging
Change-Id: Ic15e0b0870b1ec08a2f165ad0e5356afed02eece
2017-06-01 12:42:33 -07:00
Josh Gao e740250b9d crash_dump: clear the signal mask.
crash_dump inherits its signal mask from the thread that forked it,
which always has all of its signals blocked, now that sigchain respects
sa_mask.

Manually clear the signal mask, and reduce the timeout to a
still-generous 2 seconds.

Bug: http://b/38427757
Test: manually inserted sleep in crash_dump
Change-Id: If1c9adb68777b71fb19d9b0f47d6998733ed8f52
2017-06-01 11:55:25 -07:00
Narayan Kamath a73df601b7 tombstoned: allow intercepts for java traces.
All intercept requests and crash dump requests must now specify a
dump_type, which can be one of kDebuggerdNativeBacktrace,
kDebuggerdTombstone or kDebuggerdJavaBacktrace. Each process can have
only one outstanding intercept registered at a time.

There's only one non-trivial change in this changeset; and that is
to crash_dump. We now pass the type of dump via a command line
argument instead of inferring it from the (resent) signal, this allows
us to connect to tombstoned before we wait for the signal as the
protocol requires.

Test: debuggerd_test

Change-Id: I189b215acfecd08ac52ab29117e3465da00e3a37
2017-05-31 10:35:32 +01:00