summaryrefslogtreecommitdiffstats
path: root/debuggerd
Commit message (Collapse)AuthorAgeFilesLines
* Fix alignment when reading note segment.Yabin Cui2015-04-141-2/+4
| | | | | | | | ELF said that padding is present, if necessary, to ensure 4-byte alignment for the descriptor and next note entry, but such padding is not included in namesz and descsz. Change-Id: I7896783f3d9a787772d56c49905f52a493c9fba1
* Print the build id of shared libraries if present.Christopher Ferris2015-03-174-61/+229
| | | | | | | | | | | | For every map that has a name, and if it's a mapped in shared library, print the build id. Refactor the way dump_all_maps logs data. Refactor the way stack segments are dumped. Bug: 19371018 Change-Id: Ic08d05a4b13f128925743936fb84d8059f7cb56f
* Add backtrace support for mips64.Douglas Leung2015-03-094-3/+153
| | | | Change-Id: I12ea2fcbe6780bb596f51988eae1ceafcec858df
* liblog: introduce ANDROID_LOG_* flagsMark Salyzyn2015-02-251-1/+1
| | | | | | | | Move away from using POSIX open(2) flags and introduce ANDROID_LOG_* flags to replace them. Add security by preventing random mode flags from getting into underlying POSIX calls. ANDROID_LOG_* flags overlap POSIX O_* flag definitions. Change-Id: Ib32bb64c287e8bf150be62242e1ba46bb37839fc
* Do not dump maps/memory/code of sibling threads.Christopher Ferris2015-02-091-43/+39
| | | | | | | | | | | | | | | Modifies the code so that if the unwind fails, the code still prints as much data as possible. Also, for sibling threads, skip printing the maps and memory/code since it's not likely to be very relevant. Fix a few cases where extra space is at the end of lines. Fix an inverted if statement that was checking the wrong condition. Bug: 18816322 Change-Id: Ic659e0c34489bf2c65c5a23e2b83e31653b927e4
* Move map data into backtrace data proper.Christopher Ferris2015-02-061-3/+4
| | | | | | | | | | | The backtrace structure used to include a pointer to a backtrace_map_t that represented the map data for a particular pc. This introduced a race condition where the pointer could be discarded, but the backtrace structure still contained a pointer to garbage memory. Now all of the map information is right in the structure. Bug: 19028453 Change-Id: If7088a73f3c6bf1f3bc8cdd2bb4b62e7cab831c0
* Remove the pt_regs_mips_t structure.Christopher Ferris2015-01-261-14/+2
| | | | | | | The kernel finally has the pt_regs structure properly defined for mips, so we don't need to define it ourselves. Change-Id: Ifdf75ed827cd2390962e9b3a182bdbbf02fe0732
* Move 32 bit/64 bit check into debuggerd.Christopher Ferris2015-01-202-2/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | On 64 bit systems, calls to dump_backtrace_to_file or dump_tombstone try and directly contact the correct debuggerd (32 bit vs 64 bit) by reading the elf information for the executable. Unfortunately, system_server makes a call to dump_backtrace_to_file and it doesn't have permissions to read the executable data, so it defaults to always contacting the 64 bit debuggerd. This CL changes the code so that all dump requests go to the 64 bit debuggerd, which reads the elf information and redirects requests for 32 bit processes to the 32 bit debuggerd. Testing: - Forced the watchdog code in system_server to dump stacks and verified that all native stacks are dumped correctly. - Verified that dumpstate and bugreport still properly dump the native processes on a 64 bit and 32 bit system. - Intentionally forced the 64 bit to 32 bit redirect to write only a byte at a time and verified there are no errors, and no dropped data. - Used debuggerd and debuggerd64 to dump 32 bit and 64 bit processes seemlessly. - Used debuggerd on a 32 bit system to dump native stacks. Bug: https://code.google.com/p/android/issues/detail?id=97024 Change-Id: Ie01945153bdc1c4ded696c7334b61d58575314d1
* #include <arpa/inet.h> for htonl.Elliott Hughes2014-12-182-0/+3
| | | | | Not sure why this only shows up with clang. Change-Id: Id5603483e32f8a8d4b091dbb31b3142e3f77deac
* Make crasher smash-stack work.Yabin Cui2014-12-111-10/+18
| | | | | Bug: 18721888 Change-Id: Id0280df7cb2c29832256d3d395e6399fcef9aa2b
* Print ASCII near register for all archsDmitriy Ivanov2014-12-101-8/+0
| | | | | Bug: 17880617 Change-Id: I6870e8ac670c08e45d8efb64479976a38edfdc93
* Move debuggerd to libc++.Dan Albert2014-11-151-2/+0
| | | | | Bug: 15193147 Change-Id: I935a08e98077b688d1735fb5b84a615cb7df8810
* am a11ac455: Merge "Fix debuggerd issues."Christopher Ferris2014-11-035-63/+56
|\ | | | | | | | | * commit 'a11ac45536f0722becefccdb6b58378c5d9d0d4b': Fix debuggerd issues.
| * Fix debuggerd issues.Christopher Ferris2014-11-035-63/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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 (cherry picked from commit 84ddb34a3af77dbe490aaa07b738bbfd7109d5ba) Change-Id: I45e33865614d4c96f4a89cf117398666b556d500
* | am d88323b2: Merge "Add volatile to avoid clang optimization."Chih-Hung Hsieh2014-10-281-1/+1
|\ \ | |/ | | | | | | * commit 'd88323b2667c443c2738eb601eb0b9eaad1c3049': Add volatile to avoid clang optimization.
| * Add volatile to avoid clang optimization.Chih-Hung Hsieh2014-10-231-1/+1
| | | | | | | | | | BUG: 18108178 Change-Id: Ie5b8b1808fcf6d1eacc14a7c6ac0c8d49641fec2
* | am c3e6eb21: Merge "Move ABI: line below header when dumping stacks." into ↵Jeff Brown2014-09-121-2/+2
|\ \ | | | | | | | | | | | | | | | | | | lmp-dev * commit 'c3e6eb21b58ae3067ed03358687d1edb851f2abf': Move ABI: line below header when dumping stacks.
| * | Move ABI: line below header when dumping stacks.Jeff Brown2014-09-111-2/+2
| | | | | | | | | | | | | | | Bug: 17474152 Change-Id: I66b6e7e1cbb004f7a1915a2c1515df6555fe176f
| * | Do not suppress maps dump when si_addr<PAGE_SIZEDmitriy Ivanov2014-08-111-9/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | Also remove alignment of si_addr. (cherry picked from commit f10aa3ae9d58269465c579e4c286ccef6be4c2d0) Bug: 16950250 Change-Id: I60170b9eb7dd8fe99c0eeeaec74d13cfbaa920d9
| * | debuggerd: tombstone: suppress logger request for logd processMark Salyzyn2014-07-292-1/+13
| | | | | | | | | | | | | | | | | | (cherry pick from 45ae446cab9cfc9b6100d91b1a37c6ad82e0cb99) Change-Id: I619880342ee6febd1a6cc98d2a4f536120efc1c8
| * | Added default constructor for log_t.Brigid Smith2014-07-292-2/+7
| | | | | | | | | | | | | | | | | | | | | | | | Bug: 16357258 (cherry picked from commit c75a02fe3f9abec006a1e88794f2fa12fbeafd8f) Change-Id: I96be34ee1664af54b0dcbc928ea542cd749852fd
* | | am 75ef453e: am 2f40ddf3: Merge "Do not suppress maps dump when ↵Dmitriy Ivanov2014-08-101-9/+6
|\ \ \ | | |/ | |/| | | | | | | | | | | | | si_addr<PAGE_SIZE" * commit '75ef453e5d3352aad8c55cd8fa572945c6f4bbfa': Do not suppress maps dump when si_addr<PAGE_SIZE
| * | Do not suppress maps dump when si_addr<PAGE_SIZEDmitriy Ivanov2014-08-091-9/+6
| | | | | | | | | | | | | | | | | | Also remove alignment of si_addr. Change-Id: Ie5445bf8a5baa49e04e37c643c25ebd0f1dc9d22
* | | am 1d497f8a: am cddc97cb: Merge "debuggerd: tombstone: suppress logger ↵Mark Salyzyn2014-07-292-1/+13
|\ \ \ | |/ / | | | | | | | | | | | | | | | request for logd process" * commit '1d497f8a92994abeb5baeaacdec037268838af20': debuggerd: tombstone: suppress logger request for logd process
| * | debuggerd: tombstone: suppress logger request for logd processMark Salyzyn2014-07-282-1/+13
| | | | | | | | | | | | Change-Id: I619880342ee6febd1a6cc98d2a4f536120efc1c8
* | | am c70ebca4: am 6bc762b2: Merge "Add SELinux MAC to debuggerd."Nick Kralevich2014-07-241-0/+56
|\ \ \ | |/ / | | | | | | | | | * commit 'c70ebca44cc37b0d261736446ccf52bbdb61e7d1': Add SELinux MAC to debuggerd.
| * | Add SELinux MAC to debuggerd.Stephen Smalley2014-07-241-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | debuggerd allows uid-0 processes to dump tombstones or backtraces of any process, and uid-system processes to dump backtraces of any processes. Restrict these operations via SELinux based on the client context, the target process context, and the action. Depends on I8e120d319512ff207ed22ed87cde4e0432a13dda for the corresponding policy definitions. Change-Id: Ib317564e54e07cc21f259e75124b762ad17c6e16 Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
* | | am 4a95a209: am 719fd238: Merge "Added default constructor for log_t."Elliott Hughes2014-07-172-2/+7
|\ \ \ | |/ / | | / | |/ |/| * commit '4a95a209e8fc472461aa75282b486e1860edde19': Added default constructor for log_t.
| * Added default constructor for log_t.Brigid Smith2014-07-172-2/+7
| | | | | | | | | | Bug: 16357258 Change-Id: I39169b35653d2b717fadbcff75978db01cc375ef
| * Add SIGFPE to crasher.Elliott Hughes2014-07-151-1/+5
| | | | | | | | | | Bug: 3399996 Change-Id: I115caf846a47f57984c1b1844104e37d29e6f24e
| * Add missing arm64 registers.Elliott Hughes2014-07-143-33/+34
| | | | | | | | | | | | | | | | | | 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.) Change-Id: I239a86dd225b47fa90109bc824b7610df67ad812
* | debuggerd: use O_NOFOLLOW|O_CLOEXEC for tombstonesNick Kralevich2014-07-161-2/+2
| | | | | | | | Change-Id: I71bdfba30346a9fad3129b404f39eda8190698e3
* | Add SIGFPE to crasher.Elliott Hughes2014-07-151-1/+5
| | | | | | | | | | | | | | | | Bug: 3399996 (cherry picked from commit 3ecc42106ea4cf825a57859cfd58442442685d24) Change-Id: I075613ca3c022ce8d38a06a5ba236ceff32d181c
* | Add missing arm64 registers.Elliott Hughes2014-07-143-33/+34
|/ | | | | | | | | | | 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 b40c50351ebd9fb40b76a3169ad5cc6a25c453f1) Change-Id: Ic646fb9ea01e9beb42e1757feb8742c1d4efafa7
* Fix arm emulator "D register out of range for selected VFP version" build ↵Elliott Hughes2014-07-092-0/+9
| | | | | | failure. Change-Id: Ia37cb3f8ecb00a927fa3fc8b4131c158413646e7
* Integrate vfp-crasher with crasher.Elliott Hughes2014-07-098-161/+75
| | | | | | | | | | | 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
* Fix LP64 tombstone.cpp build failure.Elliott Hughes2014-07-081-1/+1
| | | | Change-Id: Id071417f56dd883e9d2e38a6f3296cb23a0352fb
* Improving maps output.Brigid Smith2014-07-082-15/+25
| | | | | | | | | | | | | | | 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
* debuggerd: synchronize cosmetics to internalMark Salyzyn2014-06-271-13/+9
| | | | Change-Id: I66bc2b181cd75da188c046571492224d5ac3fc98
* Merge "Fixed tid/pid mixup in debuggerd gdbclient output."Elliott Hughes2014-06-261-5/+5
|\
| * Fixed tid/pid mixup in debuggerd gdbclient output.Brigid Smith2014-06-271-5/+5
| | | | | | | | | | | | | | Now the debugging output shows the tid of the crashed thread instead of the pid of the process that crashed. Change-Id: I637f409ff02d73d458edc6d1a5c462c21d128211
* | tombstone: log output header suppressed in crashMark Salyzyn2014-06-271-1/+1
|/ | | | | Bug: 15520846 Change-Id: I18934cc60af3dda98ab729fbabc4c7a66834512e
* Print ABI in backtraces.Michael Wright2014-06-243-16/+18
| | | | | | | This lets the stack tool figure out which toolchain to use automatically. Change-Id: Ia235d6904622423fe6fbc7b0315a1861e52a41ad
* Fixed pathname for connecting to debugger.Brigid Smith2014-06-241-11/+1
| | | | | | | 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
* Fixing debuggerd header output.Brigid Smith2014-06-231-3/+2
| | | | | | PID and TID output line was missing. Change-Id: I609af5727bc22ea0b97f3975ddb3cf0102910bc2
* Maps output now marks the fault address location.Brigid Smith2014-06-201-4/+13
| | | | | | | | 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
* Fix debuggerd "format '%p'" build breakage.Elliott Hughes2014-06-191-3/+1
| | | | Change-Id: I589d44485e55c23d1f1a6edfa8310a90cac2429e
* Updated non-ARM archs to reflect logging changes.Brigid Smith2014-06-194-6/+6
| | | | Change-Id: I0af865881c19ea4a57ec1aa9455bc32c08a60d75
* Removed log.quiet and log = NULL cases from debuggerd.Brigid Smith2014-06-196-81/+69
| | | | | | | | | 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
* Changed maps output in debuggerd.Brigid Smith2014-06-172-29/+13
| | | | | | | | | | | 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