Add ability to unwind stack for the current thread

Bug: webrtc:10308
Change-Id: Ia82cb7512524bede8da69bbc747ece6e718733ab
Reviewed-on: https://webrtc-review.googlesource.com/c/124993
Reviewed-by: Magnus Jedvert <magjed@webrtc.org>
Commit-Queue: Karl Wiberg <kwiberg@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#26945}
This commit is contained in:
Karl Wiberg
2019-02-28 17:06:54 +01:00
committed by Commit Bot
parent 8b8d01ada3
commit c130d42aab
3 changed files with 46 additions and 20 deletions

View File

@ -163,6 +163,16 @@ void TestStacktrace(std::unique_ptr<DeadlockInterface> deadlock_impl) {
thread.Stop();
}
TEST(Stacktrace, TestCurrentThread) {
const uint32_t start_addr = GetCurrentRelativeExecutionAddress();
const std::vector<StackTraceElement> stack_trace = GetStackTrace();
const uint32_t end_addr = GetCurrentRelativeExecutionAddress();
EXPECT_TRUE(StackTraceContainsRange(stack_trace, start_addr, end_addr))
<< "Caller region: [" << rtc::ToHex(start_addr) << ", "
<< rtc::ToHex(end_addr)
<< "] not contained in: " << StackTraceToString(stack_trace);
}
TEST(Stacktrace, TestSpinLock) {
TestStacktrace(absl::make_unique<SpinDeadlock>());
}