android: Do not use /proc/self/exe to get dynamic section.
The crazy linker used to parse /proc/self/exe and /proc/self/maps in order to find the value of the process-global |r_debug| variable maintained by the system linker. Unfortunately, this operation is flaky on Android L (see attached bug for details). In the end this prevents Crashpad from generating valid stack traces, because it will not see libchrome.so in the current process when this happens. This CL uses getauxval() instead to get the same address, since this function is available from the C library starting with API level 18 / Android KitKat. + Add new unit-test to check that RDebug::GetAddress() works correctly. BUG=946380 R=pasko@chromium.org, agrieve@chromium.org, jperaza@chromium.org Change-Id: I90212f94206fda05be515bdbd6fc7f1285f041a8 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1541117Reviewed-by:Andrew Grieve <agrieve@chromium.org> Commit-Queue: David Turner <digit@chromium.org> Cr-Commit-Position: refs/heads/master@{#644778}
Showing
Please register or sign in to comment