mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2025-01-24 11:01:09 +00:00
Add the TID to the CallStack.
R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1849933002 .
This commit is contained in:
parent
c77c51fae6
commit
d9c532217e
|
@ -45,6 +45,7 @@
|
||||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
||||||
#define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
||||||
|
|
||||||
|
#include <cstdint>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace google_breakpad {
|
namespace google_breakpad {
|
||||||
|
@ -61,15 +62,24 @@ class CallStack {
|
||||||
|
|
||||||
// Resets the CallStack to its initial empty state
|
// Resets the CallStack to its initial empty state
|
||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
const vector<StackFrame*>* frames() const { return &frames_; }
|
const vector<StackFrame*>* frames() const { return &frames_; }
|
||||||
|
|
||||||
|
// Set the TID associated with this call stack.
|
||||||
|
void set_tid(uint32_t tid) { tid_ = tid; }
|
||||||
|
|
||||||
|
uint32_t tid() { return tid_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
// Stackwalker is responsible for building the frames_ vector.
|
// Stackwalker is responsible for building the frames_ vector.
|
||||||
friend class Stackwalker;
|
friend class Stackwalker;
|
||||||
|
|
||||||
// Storage for pushed frames.
|
// Storage for pushed frames.
|
||||||
vector<StackFrame*> frames_;
|
vector<StackFrame*> frames_;
|
||||||
|
|
||||||
|
// The TID associated with this call stack. Default to 0 if it's not
|
||||||
|
// available.
|
||||||
|
uint32_t tid_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_breakpad
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -48,6 +48,7 @@ void CallStack::Clear() {
|
||||||
++iterator) {
|
++iterator) {
|
||||||
delete *iterator;
|
delete *iterator;
|
||||||
}
|
}
|
||||||
|
tid_ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_breakpad
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -267,6 +267,7 @@ ProcessResult MinidumpProcessor::Process(
|
||||||
// one bad thread.
|
// one bad thread.
|
||||||
BPLOG(ERROR) << "No stackwalker for " << thread_string;
|
BPLOG(ERROR) << "No stackwalker for " << thread_string;
|
||||||
}
|
}
|
||||||
|
stack->set_tid(thread_id);
|
||||||
process_state->threads_.push_back(stack.release());
|
process_state->threads_.push_back(stack.release());
|
||||||
process_state->thread_memory_regions_.push_back(thread_memory);
|
process_state->thread_memory_regions_.push_back(thread_memory);
|
||||||
}
|
}
|
||||||
|
|
|
@ -414,6 +414,7 @@ TEST_F(MinidumpProcessorTest, TestBasicProcessing) {
|
||||||
ASSERT_EQ(state.crash_reason(), "EXCEPTION_ACCESS_VIOLATION_WRITE");
|
ASSERT_EQ(state.crash_reason(), "EXCEPTION_ACCESS_VIOLATION_WRITE");
|
||||||
ASSERT_EQ(state.crash_address(), 0x45U);
|
ASSERT_EQ(state.crash_address(), 0x45U);
|
||||||
ASSERT_EQ(state.threads()->size(), size_t(1));
|
ASSERT_EQ(state.threads()->size(), size_t(1));
|
||||||
|
EXPECT_EQ((*state.threads())[0]->tid(), 3060);
|
||||||
ASSERT_EQ(state.requesting_thread(), 0);
|
ASSERT_EQ(state.requesting_thread(), 0);
|
||||||
EXPECT_EQ(1171480435U, state.time_date_stamp());
|
EXPECT_EQ(1171480435U, state.time_date_stamp());
|
||||||
EXPECT_EQ(1171480435U, state.process_create_time());
|
EXPECT_EQ(1171480435U, state.process_create_time());
|
||||||
|
|
Loading…
Reference in a new issue