Commit graph

167 commits

Author SHA1 Message Date
Christopher Ferris
84ddb34a3a Fix debuggerd issues.
- Fix a problem where a tid exits before the attach completes, and it
  causes debuggerd to self terminate.
- Fix a problem where sibling tid dumps do not properly wait for the tid
  to get signalled.

Bug: 17800180
Bug: 12567315
Change-Id: Ic3cd619cc2c72402f9a45f14abeed4721b50d64d
2014-11-02 23:36:15 -08:00
Jeff Brown
9b12d53b1a Move ABI: line below header when dumping stacks.
Bug: 17474152
Change-Id: I66b6e7e1cbb004f7a1915a2c1515df6555fe176f
2014-09-11 14:20:04 -07:00
Dmitriy Ivanov
a639b97d4a Do not suppress maps dump when si_addr<PAGE_SIZE
Also remove alignment of si_addr.

(cherry picked from commit f10aa3ae9d)

Bug: 16950250
Change-Id: I60170b9eb7dd8fe99c0eeeaec74d13cfbaa920d9
2014-08-11 10:01:58 -07:00
Mark Salyzyn
2f2e79de0c debuggerd: tombstone: suppress logger request for logd process
(cherry pick from 45ae446cab)

Change-Id: I619880342ee6febd1a6cc98d2a4f536120efc1c8
2014-07-29 16:13:23 -07:00
Brigid Smith
166cfe68c3 Added default constructor for log_t.
Bug: 16357258

(cherry picked from commit c75a02fe3f)

Change-Id: I96be34ee1664af54b0dcbc928ea542cd749852fd
2014-07-29 16:08:34 -07:00
Nick Kralevich
04f9b2a809 debuggerd: use O_NOFOLLOW|O_CLOEXEC for tombstones
Change-Id: I71bdfba30346a9fad3129b404f39eda8190698e3
2014-07-16 20:08:41 -07:00
Elliott Hughes
e9f7361ea9 Add SIGFPE to crasher.
Bug: 3399996

(cherry picked from commit 3ecc42106e)

Change-Id: I075613ca3c022ce8d38a06a5ba236ceff32d181c
2014-07-15 13:18:32 -07:00
Elliott Hughes
aae5d43755 Add missing arm64 registers.
Also fix dumping of arm64's vector registers, which are actually 128 bits wide.

Also move the arm/arm64 FP registers to the tombstone. (We've never dumped
them at all for the other architectures.)

(cherry picked from commit b40c50351e)

Change-Id: Ic646fb9ea01e9beb42e1757feb8742c1d4efafa7
2014-07-14 18:56:53 -07:00
Elliott Hughes
cb7aae167e Fix arm emulator "D register out of range for selected VFP version" build failure.
Change-Id: Ia37cb3f8ecb00a927fa3fc8b4131c158413646e7
2014-07-09 16:41:04 -07:00
Elliott Hughes
e7f18e14a9 Integrate vfp-crasher with crasher.
There's no good reason to separate "fill the integer registers with
recognizable patterns and crash" from "fill the FP registers with recognizable
patterns and crash".

Also remove the incorrect use of ARCH_ARM_HAVE_VFP_D32 rather than try to fix
it.

Change-Id: I3a4a3aca1575de5489314027ae52168997404d79
2014-07-09 12:19:32 -07:00
Elliott Hughes
7e775952e1 Fix LP64 tombstone.cpp build failure.
Change-Id: Id071417f56dd883e9d2e38a6f3296cb23a0352fb
2014-07-08 11:35:58 -07:00
Brigid Smith
8606eaa770 Improving maps output.
Maps output now displays fault address location more intelligently.  If
the fault is not in a mapped region, it now shows where that address is
with respect to the other maps.

In addition, the size of the map is now printed as part of the output.

Also, crasher now supports an "mmap" option which mmaps/munmaps a region
of memory and then attempts to access it, causing a fault address in
between mapped regions that can be used to test that new part of the
maps output.

Change-Id: Ia5e1926802bdfcbbdb7857e3631ddf395ae0c5b8
2014-07-08 10:53:49 -07:00
Mark Salyzyn
17e85c0671 debuggerd: synchronize cosmetics to internal
Change-Id: I66bc2b181cd75da188c046571492224d5ac3fc98
2014-06-27 15:55:19 -07:00
Elliott Hughes
e080be5754 Merge "Fixed tid/pid mixup in debuggerd gdbclient output." 2014-06-26 18:34:59 +00:00
Brigid Smith
75582957cf Fixed tid/pid mixup in debuggerd gdbclient output.
Now the debugging output shows the tid of the crashed thread instead of
the pid of the process that crashed.

Change-Id: I637f409ff02d73d458edc6d1a5c462c21d128211
2014-06-27 09:21:12 -07:00
Mark Salyzyn
e43290d7ed tombstone: log output header suppressed in crash
Bug: 15520846
Change-Id: I18934cc60af3dda98ab729fbabc4c7a66834512e
2014-06-27 10:32:22 -07:00
Michael Wright
80f596984e Print ABI in backtraces.
This lets the stack tool figure out which toolchain to use
automatically.

Change-Id: Ia235d6904622423fe6fbc7b0315a1861e52a41ad
2014-06-24 17:14:26 -07:00
Brigid Smith
20c214f857 Fixed pathname for connecting to debugger.
The debug output was still showing the pathname that worked with
gdbclient before my changes, and therefore did not work after the fact.

Change-Id: Ie12d79f5346088914ce0a70bda69780707b31d31
2014-06-24 10:04:41 -07:00
Brigid Smith
f473200d35 Fixing debuggerd header output.
PID and TID output line was missing.

Change-Id: I609af5727bc22ea0b97f3975ddb3cf0102910bc2
2014-06-23 11:03:40 -07:00
Brigid Smith
2e8290463e Maps output now marks the fault address location.
If the fault address is not within a mapped region, it logs an error
message after the output.  Otherwise, it prefixes the location of the
fault address with "--->" to make it easier to locate.

Change-Id: I330adaade4402ffeb09f1a6d34a944c2f054d06d
2014-06-20 09:30:16 -07:00
Elliott Hughes
e901c1bf8a Fix debuggerd "format '%p'" build breakage.
Change-Id: I589d44485e55c23d1f1a6edfa8310a90cac2429e
2014-06-19 11:46:27 -07:00
Brigid Smith
e17f267b2a Updated non-ARM archs to reflect logging changes.
Change-Id: I0af865881c19ea4a57ec1aa9455bc32c08a60d75
2014-06-19 11:33:38 -07:00
Brigid Smith
50eb546ec1 Removed log.quiet and log = NULL cases from debuggerd.
Now the functionality implemented by these semi-confusing cases has been
replaced with the same logtype enum behavior that is easier to
understand, and cases that used log-looking behavior to print to logcat
(when log = NULL) now use the more transparent ALOGE/ALOGD functions.

Change-Id: I7e38f2d4ca74a828df4d2266b3ea34edd3c6f5bb
2014-06-19 10:59:01 -07:00
Brigid Smith
7b2078eeb4 Changed maps output in debuggerd.
Now the map output is only sent to the tombstone, and the entire
contents of /prod/$PID/maps is logged, not just 3 lines.  Additionally,
crasher now supports "crasher SIGSEGV-non-null", which attempts to write to a
dereferenced function address, causing a SIGSEGV at a non-zero address.
This new crasher mode can be used to test the new maps output.

Bug: 15343662
Change-Id: I796d92e8352a6b9714bbbfe96f3143c56565ef2f
2014-06-17 15:32:22 -07:00
Brigid Smith
1babede38b Fixed logcat debug output issue.
Change-Id: Ibeb048b683ec11b05af23371e5e4b17cdd50fea0
2014-06-17 14:24:43 -07:00
Brigid Smith
62ba489ba0 Changing how debuggerd filters log messages to different locations.
The system by which debuggerd filters its output to different locations
is now based on an enum called logtype with easy to understand
categories for log messages (like THREAD, MEMORY, etc.) instead of the
old, fairly esoteric scope_flags variable.  Now much of the output that
previously went to logcat does not show up on the screen, but all output
can be found in the tombstone file.  In addition, the tombstone's
location is now printed so it can be located easily.

Bug: 15341747
Change-Id: Ia2f2051d1dfdea934d0e6ed220f24345e35ba6a2
2014-06-16 14:41:21 -07:00
Elliott Hughes
20df39a089 Merge "Adding ABI output to debuggerd tombstones." 2014-06-04 21:11:47 +00:00
Brigid Smith
9c8dacce55 Adding ABI output to debuggerd tombstones.
Bug: 15084471
Change-Id: If9fb260a3403e86f80928f2f5f79331fc0936030
2014-06-04 12:29:24 -07:00
Christopher Ferris
3520086e3d Fix x86 and x86_64 builds.
Change-Id: I1ee9117843aff2abe4067f288b8496d4bfc78c9e
2014-06-03 17:13:37 -07:00
Elliott Hughes
ddde05f3ee Merge "[MIPS64] Build debuggerd for mips64" 2014-06-03 23:26:33 +00:00
Duane Sand
a80b759857 [MIPS64] Build debuggerd for mips64
Change-Id: I361e9668baa218fc01e723c2df1a34ca6329cf47
2014-06-03 16:24:57 -07:00
Elliott Hughes
8c597684b1 Clean up the debuggerd makefile.
In particular, turn on -Wunused, which is globally off by default
thanks to build/core/config.mk.

Change-Id: Iba3ee1c0726f43eced972a53959f0e1cd97190c9
2014-06-03 15:12:07 -07:00
Mark Salyzyn
e4369d68a2 logd: logcat: debuggerd: audit logs to events and main
- auditd spawn log copy to events and main
- logcat delete events as one of the default logs
- debuggerd do not collect events.
- squish multiple spaces
- switch from strcpy to memmove for overlapping buffers

BUG: 14626551
Change-Id: I89b30273ce931ed2b25a53ea9be48e77f4c1bbf4
2014-05-27 14:29:56 -07:00
Douglas Leung
6254f32f21 Fix register dump and back trace after a crash.
Change-Id: Ie5f6624b9dcf81d84769b9cdaf9d8a301c8826f7
Signed-off-by: Douglas Leung <douglas@mips.com>
2014-05-21 16:41:20 -07:00
Elliott Hughes
a323b504a7 Teach debuggerd the name of SIGTRAP.
Also add SIGTRAP to the list of signals we don't want to double fault on.

Bug: 15024256
Change-Id: I23ab80800563c007fcd3e42527329fedf762f0c8
2014-05-16 21:12:17 -07:00
Elliott Hughes
27ab751c7b Remove the broken LED flashing code from debuggerd.
Change-Id: I4d0cbe14daa90ac5f91ce4597584448ee3c65dda
2014-05-16 20:54:36 -07:00
Elliott Hughes
d9bf2b2137 Output correct gdbserver instructions from debuggerd.
Bug: 15021938
Change-Id: I2df433d939f5f83ed2a2a30af357b83e4d8e5331
2014-05-16 19:51:41 -07:00
Elliott Hughes
c4afc19236 Merge "Add SIGTRAP support to crasher and debuggerd." 2014-05-17 00:39:22 +00:00
Elliott Hughes
7e35ae8fc8 Add SIGTRAP support to crasher and debuggerd.
Bug: 15024256
Change-Id: I3f34993fcfd9799306852b0a2195db468370be6e
2014-05-16 17:27:59 -07:00
Mark Salyzyn
989980c55d logd: logcat: debuggerd: auditd logs to events
- auditd switch to recording logs to events log id
- logcat add events as one of the default logs
- debuggerd collect events log as well.

ToDo: debuggerd & bugreport collect intermixed logs.

BUG: 14626551
Change-Id: I958f0e729b7596748be57488a38824db5645be7b
2014-05-15 08:50:50 -07:00
Elliott Hughes
99d4a697c7 Fix mips debuggerd <corkscrew/ptrace.h> build breakage.
The uapi headers have everything we need, and the corkscrew
header files have been removed.

Change-Id: I274b44463638112f1ab290926094c094c9253586
2014-05-07 15:42:41 -07:00
Christopher Ferris
c5bb49a138 Log stack even if tombstone cannot be created.
Bug: 14498701
Change-Id: I62c271bef2f73166eeb91d3fa3ce1e1b724a081f
2014-05-05 15:01:14 -07:00
Mark Salyzyn
f1a8dfa0eb debuggerd: turn on -Werror
- Deal with some -Wunused / -Wunused-variable issues

Change-Id: I39849fe30170f69d1cab7d4ad2629b3a49e14ee7
2014-05-02 14:16:00 -07:00
Elliott Hughes
855fcc3114 Use the si_code value bionic passes us.
Bionic needs to re-raise various signals, which means the si_code
debuggerd sees has been clobbered. If bionic sends us the original
si_code value, we can use that instead of the one we see when the
ptrace the crashed process' siginfo.

Change-Id: If116a6bc667d55a6fb39b74f96673292af4e4c8c
2014-04-25 20:20:39 -07:00
Elliott Hughes
bd395b9a14 Add missing si_code values to debuggerd.
Also add static_asserts so we'll be notified if any more new ones show up.

Change-Id: I3a502dd4da35354e1ac65865191d31ccdacef298
2014-04-24 13:53:22 -07:00
Elliott Hughes
da6b2e2fd7 Improve liblog's fatal logging.
This makes LOG_ALWAYS_FATAL and LOG_ALWAYS_FATAL_IF as good as regular
assert(3).

Change-Id: I0666684d30cae7baf23c64b33d35c1e43f81acf0
2014-04-24 13:28:24 -07:00
Mark Salyzyn
99f47a9e7c logd: liblog: logcat: debuggerd: Add LOG_ID_CRASH
Change-Id: Iea453764a1a4fc1661f461f10c641c30150e4d20
2014-04-16 15:38:50 -07:00
Colin Cross
87a6b1d799 debuggerd: use LOCAL_MULTILIB
Use LOCAL_MULTILIB to build multiple versions of executables
instead of manually creating two build rules.

Change-Id: I1a993ff7b5f527a88735f46eec9822bb97d16490
2014-03-26 15:16:23 -07:00
Colin Cross
579c9bc8a4 build debuggerd and debuggerd64 on 64-bit architectures
Change-Id: I1518d45ae0c5e0fed31d071fdaf19a67bad1bdfc
2014-02-12 22:32:26 -08:00
Nick Kralevich
2e7347d617 Merge "Convert all selinux_android_restorecon and _setfilecon calls to new API." 2014-02-12 23:09:28 +00:00