Do not do local unwinds through .oat or .dex maps.
Bug: 27391690 Change-Id: I88a49537544b507a3b0bfa61eafc27400a05281b
This commit is contained in:
parent
ae607e149b
commit
4265ed7cc8
|
@ -23,6 +23,7 @@
|
|||
#define UNW_LOCAL_ONLY
|
||||
#include <libunwind.h>
|
||||
|
||||
#include <android-base/strings.h>
|
||||
#include <backtrace/Backtrace.h>
|
||||
|
||||
#include "BacktraceLog.h"
|
||||
|
@ -124,6 +125,16 @@ bool UnwindCurrent::UnwindFromContext(size_t num_ignore_frames, ucontext_t* ucon
|
|||
num_ignore_frames--;
|
||||
}
|
||||
}
|
||||
|
||||
// For now, do not attempt to do local unwinds through .dex, or .oat
|
||||
// maps. We can only unwind through these if there is a compressed
|
||||
// section available, almost all local unwinds are done by ART
|
||||
// which will dump the Java frames separately.
|
||||
// TODO: Come up with a flag to control this.
|
||||
if (android::base::EndsWith(frame->map.name, ".dex")
|
||||
|| android::base::EndsWith(frame->map.name, ".oat")) {
|
||||
break;
|
||||
}
|
||||
ret = unw_step (cursor.get());
|
||||
} while (ret > 0 && num_frames < MAX_BACKTRACE_FRAMES);
|
||||
|
||||
|
|
Loading…
Reference in New Issue