Microdump processing implementation

According to design document: http://goo.gl/B3wIRN
This is an initial implementation version, support ARM architecture only.

BUG=chromium:410294
R=primiano@chromium.org

Review URL: https://breakpad.appspot.com/5714003

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1403 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
mmandlis@chromium.org 2014-11-19 21:33:26 +00:00
parent e469f8cf4b
commit 6354cffeb0
12 changed files with 1091 additions and 30 deletions

View file

@ -168,7 +168,8 @@ src_libbreakpad_a_SOURCES = \
src/google_breakpad/processor/exploitability.h \
src/google_breakpad/processor/fast_source_line_resolver.h \
src/google_breakpad/processor/memory_region.h \
src/google_breakpad/processor/microdump_processor.h \
src/google_breakpad/processor/microdump.h \
src/google_breakpad/processor/microdump_processor.h \
src/google_breakpad/processor/minidump.h \
src/google_breakpad/processor/minidump_processor.h \
src/google_breakpad/processor/process_result.h \
@ -211,7 +212,8 @@ src_libbreakpad_a_SOURCES = \
src/processor/logging.cc \
src/processor/map_serializers-inl.h \
src/processor/map_serializers.h \
src/processor/microdump_processor.cc \
src/processor/microdump.cc \
src/processor/microdump_processor.cc \
src/processor/minidump.cc \
src/processor/minidump_processor.cc \
src/processor/module_comparer.cc \
@ -331,7 +333,7 @@ check_PROGRAMS += \
src/processor/exploitability_unittest \
src/processor/fast_source_line_resolver_unittest \
src/processor/map_serializers_unittest \
src/processor/microdump_processor_unittest \
src/processor/microdump_processor_unittest \
src/processor/minidump_processor_unittest \
src/processor/minidump_unittest \
src/processor/static_address_map_unittest \
@ -771,17 +773,42 @@ src_processor_map_serializers_unittest_LDADD = \
$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
src_processor_microdump_processor_unittest_SOURCES = \
src/processor/microdump_processor_unittest.cc \
src/testing/gtest/src/gtest-all.cc \
src/testing/src/gmock-all.cc
src/processor/microdump_processor_unittest.cc \
src/testing/gtest/src/gtest-all.cc \
src/testing/src/gmock-all.cc
src_processor_microdump_processor_unittest_CPPFLAGS = \
-I$(top_srcdir)/src \
-I$(top_srcdir)/src/testing/include \
-I$(top_srcdir)/src/testing/gtest/include \
-I$(top_srcdir)/src/testing/gtest \
-I$(top_srcdir)/src/testing
-I$(top_srcdir)/src \
-I$(top_srcdir)/src/testing/include \
-I$(top_srcdir)/src/testing/gtest/include \
-I$(top_srcdir)/src/testing/gtest \
-I$(top_srcdir)/src/testing
src_processor_microdump_processor_unittest_LDADD = \
$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
src/processor/basic_code_modules.o \
src/processor/basic_source_line_resolver.o \
src/processor/call_stack.o \
src/processor/cfi_frame_info.o \
src/processor/dump_context.o \
src/processor/dump_object.o \
src/processor/logging.o \
src/processor/microdump.o \
src/processor/microdump_processor.o \
src/processor/pathname_stripper.o \
src/processor/process_state.o \
src/processor/simple_symbol_supplier.o \
src/processor/source_line_resolver_base.o \
src/processor/stack_frame_symbolizer.o \
src/processor/stackwalker.o \
src/processor/stackwalker_amd64.o \
src/processor/stackwalker_arm.o \
src/processor/stackwalker_arm64.o \
src/processor/stackwalker_address_list.o \
src/processor/stackwalker_mips.o \
src/processor/stackwalker_ppc.o \
src/processor/stackwalker_ppc64.o \
src/processor/stackwalker_sparc.o \
src/processor/stackwalker_x86.o \
src/processor/tokenize.o \
$(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
src_processor_minidump_processor_unittest_SOURCES = \
src/processor/minidump_processor_unittest.cc \

View file

@ -169,7 +169,7 @@ check_PROGRAMS = $(am__EXEEXT_4) $(am__EXEEXT_5) $(am__EXEEXT_6) \
@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_unittest \
@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver_unittest \
@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers_unittest \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_unittest \
@DISABLE_PROCESSOR_FALSE@ src/processor/static_address_map_unittest \
@ -342,6 +342,7 @@ am__src_libbreakpad_a_SOURCES_DIST = \
src/google_breakpad/processor/exploitability.h \
src/google_breakpad/processor/fast_source_line_resolver.h \
src/google_breakpad/processor/memory_region.h \
src/google_breakpad/processor/microdump.h \
src/google_breakpad/processor/microdump_processor.h \
src/google_breakpad/processor/minidump.h \
src/google_breakpad/processor/minidump_processor.h \
@ -378,7 +379,7 @@ am__src_libbreakpad_a_SOURCES_DIST = \
src/processor/fast_source_line_resolver.cc \
src/processor/linked_ptr.h src/processor/logging.h \
src/processor/logging.cc src/processor/map_serializers-inl.h \
src/processor/map_serializers.h \
src/processor/map_serializers.h src/processor/microdump.cc \
src/processor/microdump_processor.cc src/processor/minidump.cc \
src/processor/minidump_processor.cc \
src/processor/module_comparer.cc \
@ -442,6 +443,7 @@ am__src_libbreakpad_a_SOURCES_DIST = \
@DISABLE_PROCESSOR_FALSE@ src/processor/exploitability_win.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/fast_source_line_resolver.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/logging.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.$(OBJEXT) \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.$(OBJEXT) \
@ -899,6 +901,31 @@ am__src_processor_microdump_processor_unittest_SOURCES_DIST = \
src_processor_microdump_processor_unittest_OBJECTS = \
$(am_src_processor_microdump_processor_unittest_OBJECTS)
@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_DEPENDENCIES = \
@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \
@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1) \
@DISABLE_PROCESSOR_FALSE@ $(am__DEPENDENCIES_1)
am__src_processor_minidump_dump_SOURCES_DIST = \
@ -1888,7 +1915,8 @@ lib_LIBRARIES = $(am__append_5) $(am__append_8)
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/exploitability.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/fast_source_line_resolver.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/memory_region.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/microdump_processor.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/microdump.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/microdump_processor.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/minidump.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/minidump_processor.h \
@DISABLE_PROCESSOR_FALSE@ src/google_breakpad/processor/process_result.h \
@ -1931,7 +1959,8 @@ lib_LIBRARIES = $(am__append_5) $(am__append_8)
@DISABLE_PROCESSOR_FALSE@ src/processor/logging.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers-inl.h \
@DISABLE_PROCESSOR_FALSE@ src/processor/map_serializers.h \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor.cc \
@DISABLE_PROCESSOR_FALSE@ src/processor/module_comparer.cc \
@ -2405,19 +2434,44 @@ TESTS = $(check_PROGRAMS) $(check_SCRIPTS)
@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_SOURCES = \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest.cc \
@DISABLE_PROCESSOR_FALSE@ src/testing/gtest/src/gtest-all.cc \
@DISABLE_PROCESSOR_FALSE@ src/testing/src/gmock-all.cc
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor_unittest.cc \
@DISABLE_PROCESSOR_FALSE@ src/testing/gtest/src/gtest-all.cc \
@DISABLE_PROCESSOR_FALSE@ src/testing/src/gmock-all.cc
@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_CPPFLAGS = \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing/include \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing/gtest/include \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing/gtest \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing/include \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing/gtest/include \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing/gtest \
@DISABLE_PROCESSOR_FALSE@ -I$(top_srcdir)/src/testing
@DISABLE_PROCESSOR_FALSE@src_processor_microdump_processor_unittest_LDADD = \
@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
@DISABLE_PROCESSOR_FALSE@ src/processor/basic_code_modules.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/basic_source_line_resolver.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/call_stack.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/cfi_frame_info.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/dump_context.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/dump_object.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/logging.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/microdump_processor.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/pathname_stripper.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/process_state.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/simple_symbol_supplier.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/source_line_resolver_base.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stack_frame_symbolizer.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_amd64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_arm64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_address_list.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_mips.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_ppc64.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_sparc.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/stackwalker_x86.o \
@DISABLE_PROCESSOR_FALSE@ src/processor/tokenize.o \
@DISABLE_PROCESSOR_FALSE@ $(PTHREAD_CFLAGS) $(PTHREAD_LIBS)
@DISABLE_PROCESSOR_FALSE@src_processor_minidump_processor_unittest_SOURCES = \
@DISABLE_PROCESSOR_FALSE@ src/processor/minidump_processor_unittest.cc \
@ -3199,6 +3253,8 @@ src/processor/fast_source_line_resolver.$(OBJEXT): \
src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/logging.$(OBJEXT): src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/microdump.$(OBJEXT): src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp)
src/processor/microdump_processor.$(OBJEXT): \
src/processor/$(am__dirstamp) \
src/processor/$(DEPDIR)/$(am__dirstamp)
@ -4313,6 +4369,7 @@ distclean-compile:
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/exploitability_win.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/fast_source_line_resolver.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/logging.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/microdump_processor.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@src/processor/$(DEPDIR)/minidump_dump.Po@am__quote@

View file

@ -0,0 +1,122 @@
// Copyright (c) 2014 Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// microdump.h: A microdump reader. Microdump is a minified variant of a
// minidump (see minidump.h for documentation) which contains the minimum
// amount of information required to get a stack trace for the crashing thread.
// The information contained in a microdump is:
// - the crashing thread stack
// - system information (os type / version)
// - cpu context (state of the registers)
// - list of mmaps
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_H__
#define GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_H__
#include <string>
#include <vector>
#include "common/scoped_ptr.h"
#include "common/using_std_string.h"
#include "google_breakpad/processor/dump_context.h"
#include "google_breakpad/processor/memory_region.h"
#include "processor/basic_code_modules.h"
namespace google_breakpad {
// MicrodumpModuleList contains all of the loaded code modules for a process
// in the form of MicrodumpModules. It maintains a vector of these modules
// and provides access to a code module corresponding to a specific address.
class MicrodumpModules : public BasicCodeModules {
public:
// Takes over ownership of |module|.
void Add(const CodeModule* module);
};
// MicrodumpContext carries a CPU-specific context.
// See dump_context.h for documentation.
class MicrodumpContext : public DumpContext {
public:
virtual void SetContextARM(MDRawContextARM* arm);
};
// This class provides access to microdump memory regions.
// See memory_region.h for documentation.
class MicrodumpMemoryRegion : public MemoryRegion {
public:
MicrodumpMemoryRegion();
virtual ~MicrodumpMemoryRegion() {}
// Set this region's address and contents. If we have placed an
// instance of this class in a test fixture class, individual tests
// can use this to provide the region's contents.
void Init(uint64_t base_address, const std::vector<uint8_t>& contents);
virtual uint64_t GetBase() const;
virtual uint32_t GetSize() const;
virtual bool GetMemoryAtAddress(uint64_t address, uint8_t* value) const;
virtual bool GetMemoryAtAddress(uint64_t address, uint16_t* value) const;
virtual bool GetMemoryAtAddress(uint64_t address, uint32_t* value) const;
virtual bool GetMemoryAtAddress(uint64_t address, uint64_t* value) const;
// Print a human-readable representation of the object to stdout.
virtual void Print() const;
private:
// Fetch a little-endian value from ADDRESS in contents_ whose size
// is BYTES, and store it in *VALUE. Returns true on success.
template<typename ValueType>
bool GetMemoryLittleEndian(uint64_t address, ValueType* value) const;
uint64_t base_address_;
std::vector<uint8_t> contents_;
};
// Microdump is the user's interface to a microdump file. It provides access to
// the microdump's context, memory regions and modules.
class Microdump {
public:
explicit Microdump(const string& contents);
virtual ~Microdump() {}
DumpContext* GetContext() { return context_.get(); }
MicrodumpMemoryRegion* GetMemory() { return stack_region_.get(); }
MicrodumpModules* GetModules() { return modules_.get(); }
private:
scoped_ptr<MicrodumpContext> context_;
scoped_ptr<MicrodumpMemoryRegion> stack_region_;
scoped_ptr<MicrodumpModules> modules_;
};
} // namespace google_breakpad
#endif // GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_H__

View file

@ -27,6 +27,9 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// The processor for microdump (a reduced dump containing only the state of the
// crashing thread). See crbug.com/410294 for more info and design docs.
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_PROCESSOR_H__
#define GOOGLE_BREAKPAD_PROCESSOR_MICRODUMP_PROCESSOR_H__

View file

@ -117,8 +117,10 @@ class ProcessState {
ExploitabilityRating exploitability() const { return exploitability_; }
private:
// MinidumpProcessor is responsible for building ProcessState objects.
// MinidumpProcessor and MicrodumpProcessor are responsible for building
// ProcessState objects.
friend class MinidumpProcessor;
friend class MicrodumpProcessor;
// The time-date stamp of the minidump (time_t format)
uint32_t time_date_stamp_;

View file

@ -73,6 +73,11 @@ BasicCodeModules::BasicCodeModules(const CodeModules *that)
}
}
BasicCodeModules::BasicCodeModules()
: main_address_(0),
map_(new RangeMap<uint64_t, linked_ptr<const CodeModule> >()) {
}
BasicCodeModules::~BasicCodeModules() {
delete map_;
}

View file

@ -67,7 +67,9 @@ class BasicCodeModules : public CodeModules {
virtual const CodeModule* GetModuleAtIndex(unsigned int index) const;
virtual const CodeModules* Copy() const;
private:
protected:
BasicCodeModules();
// The base address of the main module.
uint64_t main_address_;
@ -75,6 +77,7 @@ class BasicCodeModules : public CodeModules {
// address range.
RangeMap<uint64_t, linked_ptr<const CodeModule> > *map_;
private:
// Disallow copy constructor and assignment operator.
BasicCodeModules(const BasicCodeModules &that);
void operator=(const BasicCodeModules &that);

262
src/processor/microdump.cc Normal file
View file

@ -0,0 +1,262 @@
// Copyright (c) 2014 Google Inc.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are
// met:
//
// * Redistributions of source code must retain the above copyright
// notice, this list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above
// copyright notice, this list of conditions and the following disclaimer
// in the documentation and/or other materials provided with the
// distribution.
// * Neither the name of Google Inc. nor the names of its
// contributors may be used to endorse or promote products derived from
// this software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// microdump.cc: A microdump reader.
//
// See microdump.h for documentation.
#include "google_breakpad/processor/microdump.h"
#include <stdio.h>
#include <string.h>
#include <memory>
#include <sstream>
#include <string>
#include <vector>
#include "google_breakpad/common/minidump_cpu_arm.h"
#include "google_breakpad/processor/code_module.h"
#include "processor/basic_code_module.h"
#include "processor/linked_ptr.h"
#include "processor/logging.h"
#include "processor/range_map-inl.h"
namespace {
static const char kGoogleBreakpadKey[] = "/google-breakpad(";
static const char kMicrodumpBegin[] = "-----BEGIN BREAKPAD MICRODUMP-----";
static const char kMicrodumpEnd[] = "-----END BREAKPAD MICRODUMP-----";
static const char kOsKey[] = ": O ";
static const char kCpuKey[] = ": C ";
static const char kMmapKey[] = ": M ";
static const char kStackKey[] = ": S ";
static const char kStackFirstLineKey[] = ": S 0 ";
static const char kArmArchitecture[] = "armv7l";
template<typename T>
T HexStrToL(const string& str) {
uint64_t res = 0;
std::istringstream ss(str);
ss >> std::hex >> res;
return static_cast<T>(res);
}
std::vector<uint8_t> ParseHexBuf(const string& str) {
std::vector<uint8_t> buf;
for (size_t i = 0; i < str.length(); i += 2) {
buf.push_back(HexStrToL<uint8_t>(str.substr(i, 2)));
}
return buf;
}
} // namespace
namespace google_breakpad {
//
// MicrodumpModules
//
void MicrodumpModules::Add(const CodeModule* module) {
linked_ptr<const CodeModule> module_ptr(module);
if (!map_->StoreRange(module->base_address(), module->size(), module_ptr)) {
BPLOG(ERROR) << "Module " << module->code_file() <<
" could not be stored";
}
}
//
// MicrodumpContext
//
void MicrodumpContext::SetContextARM(MDRawContextARM* arm) {
DumpContext::SetContextFlags(MD_CONTEXT_ARM);
DumpContext::SetContextARM(arm);
valid_ = true;
}
//
// MicrodumpMemoryRegion
//
MicrodumpMemoryRegion::MicrodumpMemoryRegion() : base_address_(0) { }
void MicrodumpMemoryRegion::Init(uint64_t base_address,
const std::vector<uint8_t>& contents) {
base_address_ = base_address;
contents_ = contents;
}
uint64_t MicrodumpMemoryRegion::GetBase() const { return base_address_; }
uint32_t MicrodumpMemoryRegion::GetSize() const { return contents_.size(); }
bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
uint8_t* value) const {
return GetMemoryLittleEndian(address, value);
}
bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
uint16_t* value) const {
return GetMemoryLittleEndian(address, value);
}
bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
uint32_t* value) const {
return GetMemoryLittleEndian(address, value);
}
bool MicrodumpMemoryRegion::GetMemoryAtAddress(uint64_t address,
uint64_t* value) const {
return GetMemoryLittleEndian(address, value);
}
template<typename ValueType>
bool MicrodumpMemoryRegion::GetMemoryLittleEndian(uint64_t address,
ValueType* value) const {
if (address < base_address_ ||
address - base_address_ + sizeof(ValueType) > contents_.size())
return false;
ValueType v = 0;
uint64_t start = address - base_address_;
// The loop condition is odd, but it's correct for size_t.
for (size_t i = sizeof(ValueType) - 1; i < sizeof(ValueType); i--)
v = (v << 8) | static_cast<uint8_t>(contents_[start + i]);
*value = v;
return true;
}
void MicrodumpMemoryRegion::Print() const {
// Not reached, just needed to honor the base class contract.
assert(false);
}
//
// Microdump
//
Microdump::Microdump(const string& contents)
: context_(new MicrodumpContext()),
stack_region_(new MicrodumpMemoryRegion()),
modules_(new MicrodumpModules()) {
assert(!contents.empty());
bool in_microdump = false;
string line;
uint64_t stack_start = 0;
std::vector<uint8_t> stack_content;
string arch;
std::istringstream stream(contents);
while (std::getline(stream, line)) {
if (line.find(kGoogleBreakpadKey) == string::npos) {
continue;
}
if (line.find(kMicrodumpBegin) != string::npos) {
in_microdump = true;
continue;
}
if (line.find(kMicrodumpEnd) != string::npos) {
break;
}
if (!in_microdump) {
continue;
}
size_t pos;
if ((pos = line.find(kOsKey)) != string::npos) {
string os_str(line, pos + strlen(kOsKey));
std::istringstream os_tokens(os_str);
string unused_id;
os_tokens >> unused_id;
os_tokens >> arch;
arch = arch.substr(1, arch.length() - 2); // remove quotes
// OS line also contains release and version for future use.
} else if ((pos = line.find(kStackKey)) != string::npos) {
if (line.find(kStackFirstLineKey) != string::npos) {
// The first line of the stack (S 0 stack header) provides the value of
// the stack pointer, the start address of the stack being dumped and
// the length of the stack. We could use it in future to double check
// that we received all the stack as expected.
continue;
}
string stack_str(line, pos + strlen(kStackKey));
std::istringstream stack_tokens(stack_str);
string start_addr_str;
string raw_content;
stack_tokens >> start_addr_str;
stack_tokens >> raw_content;
uint64_t start_addr = HexStrToL<uint64_t>(start_addr_str);
if (stack_start != 0) {
// Verify that the stack chunks in the microdump are contiguous.
assert(start_addr == stack_start + stack_content.size());
} else {
stack_start = start_addr;
}
std::vector<uint8_t> chunk = ParseHexBuf(raw_content);
stack_content.insert(stack_content.end(), chunk.begin(), chunk.end());
} else if ((pos = line.find(kCpuKey)) != string::npos) {
string cpu_state_str(line, pos + strlen(kCpuKey));
std::vector<uint8_t> cpu_state_raw = ParseHexBuf(cpu_state_str);
if (strcmp(arch.c_str(), kArmArchitecture) == 0) {
MDRawContextARM* arm = new MDRawContextARM();
memcpy(arm, &cpu_state_raw[0], cpu_state_raw.size());
context_->SetContextARM(arm);
} else {
std::cerr << "Unsupported architecture: " << arch << std::endl;
}
} else if ((pos = line.find(kMmapKey)) != string::npos) {
string mmap_line(line, pos + strlen(kMmapKey));
std::istringstream mmap_tokens(mmap_line);
string addr, offset, size, identifier, filename;
mmap_tokens >> addr;
mmap_tokens >> offset;
mmap_tokens >> size;
mmap_tokens >> identifier;
mmap_tokens >> filename;
modules_->Add(new BasicCodeModule(
HexStrToL<uint64_t>(addr), // base_address
HexStrToL<uint64_t>(size), // size
filename, // code_file
identifier, // code_identifier
filename, // debug_file
identifier, // debug_identifier
"")); // version
}
}
stack_region_->Init(stack_start, stack_content);
}
} // namespace google_breakpad

View file

@ -27,6 +27,10 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// microdump_processor.cc: A microdump processor.
//
// See microdump_processor.h for documentation.
#include "google_breakpad/processor/microdump_processor.h"
#include <assert.h>
@ -35,8 +39,11 @@
#include "common/using_std_string.h"
#include "google_breakpad/processor/call_stack.h"
#include "google_breakpad/processor/microdump.h"
#include "google_breakpad/processor/process_state.h"
#include "google_breakpad/processor/stackwalker.h"
#include "google_breakpad/processor/stack_frame_symbolizer.h"
#include "processor/logging.h"
namespace google_breakpad {
@ -51,7 +58,40 @@ ProcessResult MicrodumpProcessor::Process(const string &microdump_contents,
ProcessState* process_state) {
assert(process_state);
// TODO(mmandlis): Implement MicrodumpProcessor. See crbug.com/410294
process_state->Clear();
if (microdump_contents.empty()) {
BPLOG(ERROR) << "Microdump is empty.";
return PROCESS_ERROR_MINIDUMP_NOT_FOUND;
}
Microdump microdump(microdump_contents);
process_state->modules_ = microdump.GetModules()->Copy();
scoped_ptr<Stackwalker> stackwalker(
Stackwalker::StackwalkerForCPU(
&process_state->system_info_,
microdump.GetContext(),
microdump.GetMemory(),
process_state->modules_,
frame_symbolizer_));
scoped_ptr<CallStack> stack(new CallStack());
if (stackwalker.get()) {
if (!stackwalker->Walk(stack.get(),
&process_state->modules_without_symbols_,
&process_state->modules_with_corrupt_symbols_)) {
BPLOG(INFO) << "Processing was interrupted.";
return PROCESS_SYMBOL_SUPPLIER_INTERRUPTED;
}
} else {
BPLOG(ERROR) << "No stackwalker found for microdump.";
return PROCESS_ERROR_NO_THREAD_LIST;
}
process_state->threads_.push_back(stack.release());
process_state->thread_memory_regions_.push_back(microdump.GetMemory());
process_state->crashed_ = true;
process_state->requesting_thread_ = 0;
return PROCESS_OK;
}

View file

@ -29,18 +29,152 @@
// Unit test for MicrodumpProcessor.
#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include "breakpad_googletest_includes.h"
#include "google_breakpad/processor/basic_source_line_resolver.h"
#include "google_breakpad/processor/call_stack.h"
#include "google_breakpad/processor/microdump_processor.h"
#include "google_breakpad/processor/process_state.h"
#include "google_breakpad/processor/stack_frame.h"
#include "google_breakpad/processor/stack_frame_symbolizer.h"
#include "processor/simple_symbol_supplier.h"
#include "processor/stackwalker_unittest_utils.h"
namespace {
using google_breakpad::BasicSourceLineResolver;
using google_breakpad::MicrodumpProcessor;
using google_breakpad::ProcessState;
using google_breakpad::SimpleSymbolSupplier;
using google_breakpad::StackFrameSymbolizer;
class MicrodumpProcessorTest : public ::testing::Test {
public:
MicrodumpProcessorTest()
: files_path_(string(getenv("srcdir") ? getenv("srcdir") : ".") +
"/src/processor/testdata/") {
}
void ReadFile(const string& file_name, string* file_contents) {
assert(file_contents);
std::ifstream file_stream(file_name.c_str(), std::ios::in);
ASSERT_TRUE(file_stream.good());
std::vector<char> bytes;
file_stream.seekg(0, std::ios_base::end);
ASSERT_TRUE(file_stream.good());
bytes.resize(file_stream.tellg());
file_stream.seekg(0, std::ios_base::beg);
ASSERT_TRUE(file_stream.good());
file_stream.read(&bytes[0], bytes.size());
ASSERT_TRUE(file_stream.good());
*file_contents = string(&bytes[0], bytes.size());
}
google_breakpad::ProcessResult ProcessMicrodump(
const string& symbols_file,
const string& microdump_contents,
ProcessState* state) {
SimpleSymbolSupplier supplier(symbols_file);
BasicSourceLineResolver resolver;
StackFrameSymbolizer frame_symbolizer(&supplier, &resolver);
MicrodumpProcessor processor(&frame_symbolizer);
return processor.Process(microdump_contents, state);
}
string files_path_;
};
// TODO(mmandlis): Add MicrodumpProcessor tests. See crbug.com/410294
TEST_F(MicrodumpProcessorTest, TestProcess_Empty) {
ProcessState state;
google_breakpad::ProcessResult result =
ProcessMicrodump("", "", &state);
ASSERT_EQ(google_breakpad::PROCESS_ERROR_MINIDUMP_NOT_FOUND, result);
}
TEST_F(MicrodumpProcessorTest, TestProcess_Invalid) {
ProcessState state;
google_breakpad::ProcessResult result =
ProcessMicrodump("", "This is not a valid microdump", &state);
ASSERT_EQ(google_breakpad::PROCESS_ERROR_NO_THREAD_LIST, result);
}
TEST_F(MicrodumpProcessorTest, TestProcess_MissingSymbols) {
string microdump_file = files_path_ + "microdump.dmp";
string microdump_contents;
ReadFile(microdump_file, &microdump_contents);
ProcessState state;
google_breakpad::ProcessResult result =
ProcessMicrodump("", microdump_contents, &state);
ASSERT_EQ(google_breakpad::PROCESS_OK, result);
ASSERT_TRUE(state.crashed());
ASSERT_EQ(0, state.requesting_thread());
ASSERT_EQ(104U, state.modules()->module_count());
ASSERT_EQ(1U, state.threads()->size());
ASSERT_EQ(4U, state.threads()->at(0)->frames()->size());
ASSERT_EQ("",
state.threads()->at(0)->frames()->at(0)->function_name);
ASSERT_EQ("",
state.threads()->at(0)->frames()->at(3)->function_name);
}
TEST_F(MicrodumpProcessorTest, TestProcess_UnsupportedArch) {
string microdump_contents =
"W/google-breakpad(26491): -----BEGIN BREAKPAD MICRODUMP-----\n"
"W/google-breakpad(26491): O A \"unsupported-arch\"\n"
"W/google-breakpad(26491): S 0 A48BD840 A48BD000 00002000\n";
ProcessState state;
google_breakpad::ProcessResult result =
ProcessMicrodump("", microdump_contents, &state);
ASSERT_EQ(google_breakpad::PROCESS_ERROR_NO_THREAD_LIST, result);
}
TEST_F(MicrodumpProcessorTest, TestProcess) {
string symbols_file = files_path_ + "symbols/microdump";
string microdump_file = files_path_ + "microdump.dmp";
string microdump_contents;
ReadFile(microdump_file, &microdump_contents);
ProcessState state;
google_breakpad::ProcessResult result =
ProcessMicrodump(symbols_file, microdump_contents, &state);
ASSERT_EQ(google_breakpad::PROCESS_OK, result);
ASSERT_TRUE(state.crashed());
ASSERT_EQ(0, state.requesting_thread());
ASSERT_EQ(104U, state.modules()->module_count());
ASSERT_EQ(1U, state.threads()->size());
ASSERT_EQ(21U, state.threads()->at(0)->frames()->size());
ASSERT_EQ("content::::CrashIntentionally",
state.threads()->at(0)->frames()->at(0)->function_name);
ASSERT_EQ("content::::MaybeHandleDebugURL",
state.threads()->at(0)->frames()->at(1)->function_name);
ASSERT_EQ("content::Start",
state.threads()->at(0)->frames()->at(19)->function_name);
ASSERT_EQ("libchromeshell.so",
state.threads()->at(0)->frames()->at(19)->module->code_file());
}
} // namespace
int main(int argc, char *argv[]) {
int main(int argc, char* argv[]) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}

157
src/processor/testdata/microdump.dmp vendored Normal file
View file

@ -0,0 +1,157 @@
W/IInputConnectionWrapper(26278): endBatchEdit on inactive InputConnection
W/google-breakpad(26491): -----BEGIN BREAKPAD MICRODUMP-----
W/google-breakpad(26491): O A "armv7l" "3.4.0-perf-g60eefcd "#1 SMP PREEMPT Fri Oct 10 18:28:38 UTC 2014"
W/google-breakpad(26491): S 0 A48BD840 A48BD000 00002000
W/google-breakpad(26491): S A48BD000 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000AE4755410000803F000000000000803F00000000D43DFDB60000803F0000000000000000000000FF404000000100B4008CD08BA470F0DB024800000001000000636572733400000001000000AE4755410000803F000000000000803F00000000000000000000803F0000000000000000000000FF404000000100B40035FFB899E8D08BA483B3AF997D01000007000000D880E0A170C53DB70140E0A170C53DB7000000000000000004D18BA470F0DB0238C14BB7C4D18BA440D18BA400000000CCD18BA440D18BA4C4D18BA49790C5980000803FD43DFDB6000000000000803F000000000000000000000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFFC8D18BA4C8D18BA48040959A219FF79800000000C2244B3A680000009CD28BA4
W/google-breakpad(26491): S A48BD180 CCD18BA4ACD28BA4C4D18BA438C14BB7CCD18BA401000000D43DFDB60596C598F4D78BA49CD28BA4CCD18BA4F17FC598F4D78BA42B86C598000000FF404000000100B4000900000005000000F843369BDCD18BA440000000000000000000000000000000000000000000803F12000000CD4C0542D43DFDB6D43DFDB6D43DFDB650E74AB7C0DA42B784D68BA4800A49B738D38BA4C2244B3A38D38BA40E00000068D38BA40E00000050D28BA450D88BA4ACD38BA4F4D78BA4D43DFDB67564C598A0D38BA488D38BA4090000000500000000000000FFFFFFFF00000000FFFFFFFF06000000D43DFDB668D38BA4C2244B3A60D38BA4D43DFDB6A4D28BA4000000009CD88BA4C2244B3A00000000F4D78BA4A4D88BA4D43DFDB6F4D78BA40B72C5980000000000000000FFFFFFFFD0D28BA400000000FFFFFFFF0000000084D88BA468D38BA401000000F4D78BA418D38BA4000000002DB2C598B4D88BA48CD88BA494D88BA4FFFFFFFF0E0000000100000050D88BA45CD38BA468D38BA401000000
W/google-breakpad(26491): S A48BD300 60D38BA4ACD38BA4F4D78BA459B2C59884D88BA43CD48BA450D88BA450D88BA450D88BA450D88BA450D88BA450D88BA4B8D28BA450D88BA450D88BA477BDC598F4D78BA484D88BA478D58B0084D88BA40000000001000000B8268D9A0E0000000000000006000000000000000600000000000000FFFFFFFF00000000FFFFFFFF090000000500000000000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000C843369BBCD38BA40004000000000000D8D98BA43CD58BA484D98BA4D43DFDB67564C59830D58BA418D58BA409000000050000000E000000010000000E0000000100000006000000D43DFDB6F8D48BA4C2244B3AF0D48BA4D43DFDB634D48BA40000000024DA8BA4C2244B3A0000000084D98BA42CDA8BA4C2244B3A84D98BA484D98BA434DA8BA420D58BA4D8D98BA4A8D48BA400000000FFFFFFFF000000000CDA8BA4F8D48BA40100000084D98BA4A8D48BA4000000002DB2C5983CDA8BA414DA8BA41CDA8BA4BB010000986D43B7E4D48BA4
W/google-breakpad(26491): S A48BD480 D8D98BA4ECD48BA4F8D48BA401000000F0D48BA43CD58BA484D98BA459B2C5980CDA8BA4986D43B7C8D98BA40000000000000000C8D98BA4C8D98BA477BDC59848D48BA4D8D98BA4E8D98BA40000000000000000E8D98BA4E8D98BA477BDC59800000000FFFFFFFF000000001CDA8BA40000000001000000000000000000000000000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000C843369B5CD58BA40004000000000000D43DFDB600000000050000007CD58BA4D43DFDB6D43DFDB685B9C598480000000000000005000000380A4CB701000000C843369B9CD58BA40004000000000000A5833D9A800A49B7E850FDB60000000000000000BC50659A39ED2099780A49B7000000C0F0DA42B70000000001000000000000000100000000000000200843B7E850FDB6010000000100000084D68BA400000000F0DA42B779A0F89870D68BA4C2244B3A
W/google-breakpad(26491): S A48BD600 FEFFFFFF989946B7000000007D0100008B32649A91F22099709946B7A0D88BA4385E43B70000000080010000000000007D0100000000000000000000C2244B3AF8D88BA470D78BA4000000007D0100008B32649A8BF52099000000007D010000000070C10000000080010000000000007D010000C2244B3AFEFFFFFF989946B7000000007D0100008B32649A91F22099800A49B7000000006014389B0000000080010000000000007D010000FFFFFFFFFFFFFFFF000000000000000000000000F0DA42B700000000F0DA42B7D43DFDB6D43DFDB6C2244B3A08EE42B768D78BA430D78BA420D78BA410D78BA40000000068D78BA430D78BA420D78BA447F920990000000000000000800100007D0100000000000000000000800100007D0100000000000000000000800100000000000007000000A39025995CD78BA4385E43B77C9946B768D78BA460D78BA45CD78BA40100000027A82599709946B7385E43B74CC64E9B01000000B4D88BA40F0000000100000000000000B4D88BA401000000
W/google-breakpad(26491): S A48BD780 90D88BA42D14F998B4D88BA46BE32099010000004DA42599AA9802000000000038C14BB7CCD78BA40500000048DC8BA401000000385B569A2F000000C2244B3A50D88BA468D88BA4F4D78BA450D88BA484D88BA4F4D78BA4F4D78BA468D88BA4F4D78BA4294DC598F4D78BA484D88BA4D43DFDB62844369B38C14BB70F0000000F00000068D88BA44CC64E9B0500000038C14BB748DC8BA468D88BA400000000686A4B9B48DC8BA44CD88BA4BB48C5986600000050D88BA468D88BA4E9C1369A000000007041989A807F000043DD0E996368726F6D653A2F2F637261736800A45ED88BA450D88BA468C14BB7A3D42099C2244B3A0000000047C14BB738C14BB701001044000000000600000000000000FFFFFFFF00000000FFFFFFFF090000000500000000000000FFFFFFFF0E0000000100000000000000FFFFFFFF00000000FFFFFFFF0000000000000000C2244B3AB8C23DB784DF40B77EC74C9B70DF40B748DC8BA46BD98BA448DD8BA4F903C49848DD8BA41DD1369A409D41B77983A198
W/google-breakpad(26491): S A48BD900 B0C23DB700000000D43DFDB6A8C23DB7CCDB8BA448DC8BA47EC74C9BA0D98BA470DF40B76BD98BA43C4B3AB74F41379A01000000FFFFFFFFFFFFFFFF6BD98BA46CD98BA46CD98BA404000000E8DD8BA401000000385B569A21000000D43DFDB67CD98BA41CDA8BA47CD98B0000000000E8DD8BA44349C59894D98BA400000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF000000000000000000000000FFFFFFFF00000000F8D98BA410000000F8D98BA48DC49D9800000000F8D98BA400000000B548C59800000000000000004CDE8BA47BD9C498000000007DDAD62000000000D43DFDB618F348B70000000000D98BA4E8D98BA40003450100000000F8D98BA4F8D98BA400DA8BA400000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF0000000000000000C2244B3A60F348B76F2FA198800000000100000074DE8BA498DA8BA448DC8BA47132A198
W/google-breakpad(26491): S A48BDA80 98DA8BA400000000D43DFDB6682F4BB7682F4BB773F91B99E4F248B7800000008000000001000000140000002E000000986D43B7DCDA8BA4090000004800000048DC8BA4385B569A2CDB8BA40C41EFA35441EFA3C2244B3A682F4BB7209C41B7D43DFDB6699C2F9A01000000C2244B3AB8C23DB7C2244B3AA8C23DB7C2244B3A682F4BB7682F4BB7089C41B7C7552F9AACDC8BA410000000E8DD8BA410000000E8DD8BA48DC49D98E8DD8BA46949C59874DE8BA4C2244B3A74DE8BA4FCDB8BA4682F4BB770DF40B748DC8BA4010000003C4B3AB7F903C498CCDB8BA4D335379A9935379A0100000000010000D43DFDB62E000000D43DFDB604DE8BA4D43DFDB600000000F776A298E705030008000000D43DFDB690D03BB714DE8BA410D83CB714DE8BA4E706A298F8B343B7000000C014DC8BA400B443B73CDC8BA4F93AFAB600B443B714DC8BA414DC8BA4A8C23DB7A4DF40B70E000000FFFFFFFFDCBC889AF3B6889A680300009935379AD43DFDB6D43DFDB665D6EB98A9D5EB98681C3EB7
W/google-breakpad(26491): S A48BDC00 000000000000000090D23BB700000000BCE18BA400000000000000001000000000000000FFFFFFFF18000000010000001A0000002E00000000000000FFFFFFFF0000000001010000B8C24BB7070F699A17000000385B569A97C24BB788C24BB7010E699A000000000600000000000000FFFFFFFF00000000FFFFFFFF090000000500000000000000FFFFFFFF0E0000000100000000000000FFFFFFFF00000000FFFFFFFF000000000000000010094BB77DDAD6202E0000009DDD1B22E8084BB7E8084BB700DD8BA400000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF000000000000000001000000010000020500000001DE8BA400D13BB70037A298F4AE3CB7000000000000000024DD8BA424DD8BA400000000000000000000000000DF8BA4C2244B3AFCF732039200000048DD8BA448DD8BA400000000B335FAB6F55805212E000000FFFFFFFFFFFFFFFF0000000001000000
W/google-breakpad(26491): S A48BDD80 0000000098664BB712000000385B569AECE08BA470664BB770664BB700C29D9800000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF0000000000000000C0664BB7000000001000000071B6A09898664BB798664BB70000000000000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF00000000FFFFFFFF0000000000000000000000000000000000000000003DFDB678C63DB7DD7FB7FC3E652E00FFFFFFFFFFFFFFFF00C63DB700C93DB7D8E08BA4E706A298C2244B3A74DE8BA474DE8BA400000000000000000D03A298D43DFDB60100000034134AB704E28BA4D43DFDB6010000002C134AB704E28BA401000000E706A298000000000D03A298010000000100000000000000010000000001000000000000000000000D03A298200100009B3B2099D27CBA0004000000800C49B7840C49B7
W/google-breakpad(26491): S A48BDF00 FBFFFFFFC2244B3A000000000000000038C63DB7D8D942B701000000CFB7379AD8D942B7C2244B3AD43DFDB6C2244B3A74C63DB7C2244B3A78C63DB701000000070000006B109F9868DF8BA438A43DB7D43DFDB66CC63DB774C63DB73D471F9930134AB70100000038A43DB730134AB701000000C2244B3A14000000C2244B3A01000000D43DFDB6BCE18BA428CA3DB70000000014000000010000000100000014000000CD7DA298C2244B3A5B7FA29800010000E78EA098D8D942B7C2244B3AD8D942B728E08BA414000000D3C0379A508E525462E60700000000000000000058A641B7EDCF379A625A92FC3E652E0014E08BA4C2244B3A08D740B7682F4BB76CC63DB728CA3DB738C93DB7D8E08BA444384D9B190F599AD43DFDB609481F99E9471F99682F4BB73CC63DB723891B9AECE08BA430863AB77A010100BDF4EB9830863AB7C2244B3A682F4BB7F0FB3DB728CA3DB7B7CD1C9AB5D31C9AC1D31C9AB5D31C9A3CC63DB7682F4BB7682F4BB7ECE08BA428CA3DB738C93DB7E5E4EB98
W/google-breakpad(26491): S A48BE080 000000000000000000000000000000000000000000000000006642B70000000000000000C2244B3A00000000C2244B3AD43DFDB6C2244B3AD43DFDB634134AB7000000401F000000FE1BCFFB3D0000000F5C05212E00000000000000A8E18BA4E803000000E38BA4190F599A80CD4BB7A8E18BA4BCE18BA400E38BA479CD4BB768CD4BB7C2244B3A10E18BA400E38BA4BCE18BA468C74C9B0000000090E18BA400E38BA4190F599AA4E78BA455D59E98D43DFDB6FD97A098C2244B3A18E38BA4D43DFDB690D03BB70000000090D03BB701000000E706A298DCE68BA490D03BB7010000000000000000000000660E599A010000000000000002E430F48F03A29800E38BA4C2244B3A01000000C2244B3A11D0EB98C2244B3A00000000C2244B3AA0C23DB7000000C000000000A8C23DB701000000C2244B3A20134AB7000000000000000090D23BB70000000004E58BA40000000000DC8BA414A43DB7D0E68BA4D43DFDB600E38BA404E28BA40100000000E38BA40000000000000000E39DA098
W/google-breakpad(26491): S A48BE200 D43DFDB620134AB78CE78BA403000000FFFFFFFF38E28BA490D03BB70000000090D03BB703C19D980000000080D03BB7D43DFDB67792A09890D03BB72E00000018023EB7A57D1B9A58EA2A9B571F819A5401000059901B9A000000000B000000000000000B000000000000000B00000000010000C2244B3A60A94AB7D0E28BA4189849B7DCE68BA40CE78BA4C59F9E982E000000B8E28BA4B8E28BA4212EA1981500000079A3A09808054BB7D4E28BA401000000C2244B3A08E38BA4D0E68BA400E38BA46235E020DCE68BA46D9EA098D0E68BA400E38BA400000000D0E68BA400E38BA46235E020DCE68BA40CE78BA460D13BB7000000000000000055B2A09848503CB7030000000F5C05212E0000000000000000000000502F4BB7F5CAEB9804C2949A19E3629A5C00000011D0EB98F20000000100000048D13BB7D0E68BA46235E0202E000000010000009BB8A098D43DFDB6D43DFDB66235E0202E0000006D363600000000000001000090083EB7A8FA3DB7080000000000000008000000
W/google-breakpad(26491): S A48BE380 000100000500000028AE3DB7F0E38BA41CE48BA44CE48BA4E8CF3DB7F0E38BA4A8FA3DB76F7F9F989D571F994798379A04000000D86DF800AC2B989AD43DFDB6000000006C40549A010000000000000060E83CB725AE379A5B76379A000000005B76379A000000005B76379A00000000E8CF3DB701B5379A00000000C4A33DB7C8A33DB72CE48BA403000000C2244B3ADCE48BA4D43DFDB6D0E68BA4C0E58BA430E68BA4F8E7889A6CE58BA400E68BA40100000011ACA09830E68BA4FFB5A298C2244B3AD0E68BA4D0E68BA40600000000000000060000000001000089083BB770083BB7A0E48BA4D8043EB7D8043EB734C83DB70600000000000000060000000001000080FE3AB74CC64E9B0300000008583BB7B8E48BA4DCE48BA434C83DB704C83DB7B8E48BA4D43DFDB615B0379A80FE3AB70100000000000000000000000000000000000000000000000000000000000000000000000000000028583BB76CC63DB7E8E48BA400000000C2244B3A04E58BA430E58BA4C0E58BA48381A198
W/google-breakpad(26491): S A48BE500 30E68BA4000000000000000090D23BB7000000000000000000000000BCE18BA4C2244B3AD0E68BA4A8E58BA4D996A098D0E68BA40000000001000000010001000000000030E58BA4D0E68BA413ED389A0100000084168D9A9CE68BA40100000000000000D43DFDB60C000000B4E88BA4000000000000000000000000000000000000000000000000000000000000000058203E9B8DE58BA46A5C05212E00000048CF3BB770245C0028833E9B00000000A8E58BA4A8E58BA4000000000000000000000000008000000000000090FF3AB7B0003BB730023BB70A000000A7C4589A0000000088993DB738FB3AB704E68BA404E68BA4A7719F9831FB3AB720FB3AB728BB359B00E68BA420E68BA478E83CB720E68BA404E68BA404E68BA4FFFFFFFF00000000000000000000000000000000C81D3E9B01000000C09C3DB7E8823E9B010001B700000000D0B33DB709670000D8B63DB70967000000FA3AB7382D3BB78C3B989AB0023DB7FCF93AB7E8F93AB73CC63DB700000000FFFFFFFF08000000
W/google-breakpad(26491): S A48BE680 09000000FFFFFFFF00000000C2244B3AFFFFFFFFD43DFDB6D43DFDB6A7C4589A00000000BCE88BA4B4E88BA4BD569F989CE68BA4656E2D5553008BA401000000C8E98BA4B9E68BA4B4E68BA4656E2D5520B9359B48D13BB700000000E06343B7A86343B7186443B7349F44B7E06343B7A86343B7186443B7349F44B7C89E44B7260000000000000000000000189849B7C09849B7989B49B70000000013E78BA46235E0202E00000038D03AB738D03AB7A8D03AB73C083BB738D03AB738D03AB7A8D03AB73C083BB730083BB7080000000000000028C941B73CC941B748C941B700000000000000000000000000000000D4E78BA4DFA19D98D4E78BA46CE78BA46CE78BA40000000030E58BA420134AB708A43DB714A43DB718A43DB7000000000000000098E78BA480D03BB7304C3DB720D13BB7FFC49D98D43DFDB6C2244B3ABCE88BA4BCE88BA4384B3AB702000000D43DFDB6B4E88BA410000000D8CC4A9BC071D1127B24549AD4E78BA4D43DFDB6D43DFDB6F776A2980100000001000000
W/google-breakpad(26491): S A48BE800 C2244B3ACD7DA298C2244B3A5B7FA29807000000080000001809D873C2244B3A1809D87394EA8BA45CE88BA494EA8BA45CE88BA48DE418B5883E989AD43DFDB60C3E3CB700000000FF0100005B8C08B594EA8BA490420FB70000000098383AB730413AB790420FB798383AB7430000005500000000000000983A2CB504000000013DFDB6C2244B3A4E051000C2244B3AD4E88BA438C03CB7B4E88BA4D43DFDB6BCE88BA4382D3BB7C04EC212B725549A9CE88BA4382D3BB70000000072656E6465726572001C549AD43DFDB6C4E88BA4BCE88BA4747970650000000042FA3AB730FA3AB7D8E88BA4D4E88BA479B60AB554E98BA4A852FDB600000000D8E98BA450E98BA454E98BA458E98BA4604D0FB70300000098383AB70000000021B524B540E98BA444E98BA4000000000100000057EBC4A428000000010000001A00000038C03CB703000000609AD412B335FAB60000FDB628000000000000006FC74C9BD43DFDB6609AD41298383AB7C2244B3AC071D112C2244B3A38C03CB73CC24E9B
W/google-breakpad(26491): S A48BE980 38C03CB76FC74C9BD43DFDB6609AD41298383AB7CD1F549A30413AB7C8422DB5C0EA8BA400EA8BA42757000018EA8BA438EA8BA4D43DFDB6604D0FB700000000E0EA8BA420EA8BA4384B3AB70000000058EA8BA484EA8BA4000000000000000000000000FC9329B5109429B530413AB708EA8BA484EA8BA440C0D7734300000000000000010000000075D01298383AB7010000000700000098383AB730413AB790420FB798383AB7430000004300000000000000C04EC21220422DB501413AB79796ACA401000000C8EA8BA4C8EA8BA400EB8BA4000000000000000000000000090000000000000018EA8BA40000000001000000000000000000430000005500090000000000430038EA8BA4C2244B3A005AC712AF010000005AC712B808DA7305000000609AD41298383AB75B64D5A46808DA7300000000010000000075D0120000000040C0D77384EA8BA400000000C2244B3A005AC712B808DA7305000000609AD412C04EC212C071D112A978DCA4B808DA73005AC71240C0D77305000000
W/google-breakpad(26491): S A48BEB00 609AD412005AC71240C0D7738D59DCA440C0D773804FC2120F000000D43DFDB6609AD41204000000FF0100000000000000000000A09C29B544A429B500A429B500000000409AD412609AD41204000000FF010000000000000000000001000000000000000100000001000000B0420FB790420FB7C071D112804FC212A08BBA6FF8EB8BA400000000C0EB8BA40D3C0F72A08BBA6FE4EB8BA4D43DFDB630413AB7B0EB8BA460EC8BA4E0EB8BA4093B07B500000000804FC21220A90EB7D43DFDB6A08BBA6F1C393AB798383AB7A08BBA6F78EC8BA4E1711BB560EC8BA42C298070040000002C29807060EC8BA4D43DFDB698383AB7430000000000000000000000000000000000000001000000FFFFFFFF8B000000C2244B3AA0423AB730413AB70000000060EC8BA448EC8BA440ED8BA460ED8BA4804FC2122C29807039431FB560EC8BA42C29807078EC8BA47DADF8B610000000450FD9B5010000000F00000000000000000000002C298070010000000400000078EC8BA4804FC21203000000
W/google-breakpad(26491): S A48BEC80 0051FDB6B335FAB60000FDB6C2244B3ABCEC8BA428F839B7D43DFDB6D8ED8BA428ED8BA4E86F2DB560ED8BA4092E22B510F839B7000000C00000000018F839B728ED8BA418F839B70000000098383AB788712DB504FDFFFFE86F2DB540ED8BA44300000021AB20B500000000000000000000000000000000000000000000000000000000405B2DB5D43DFDB638ED8BA4109C29B5DC9429B5109C29B5FC9329B5109429B50000000001000000000000000000000000005500000000000000550098383AB730413AB790420FB798383AB7430000005500000000000000000000000000430078000000E03E3AB7051BF9B6FFFFFFFF000000000000000000000000210000001000000018F839B7C2244B3AFFFFFFFFD83E3AB7183F3AB7D83E3AB778000000E03E3AB7E03E3AB789E8F8B6D0ED8BA4A9E8F8B689E8F8B6E03E3AB789E8F8B67DC8F8B6D0ED8BA400000000D0ED8BA4D83E3AB7160000000000000000000000C2244B3A1C3F3AB70000000000000000000000000000000000000000
W/google-breakpad(26491): S A48BEE00 000000000000000098383AB70000000000000000A0433AB7000000000000000000000000C8083BB7187A3CB788053DB730FF3BB7107A3EB70100000018293BB730A241B700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
W/google-breakpad(26491): S A48BEF80 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
W/google-breakpad(26491): C 0600004050D88BA42F000000010000000000000050D88BA468D88BA4686A4B9B48DC8BA44CD88BA401000000D43DFDB648DD8BA4F3A19D9840D88BA4F9C1369A96A9369A300000680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
W/google-breakpad(26491): M 987AB000 00000000 02BAF000 76304586D0CD2C8FF899C602BF1756A20 libchromeshell.so
W/google-breakpad(26491): M 9B35A000 00000000 0015C000 000000000000000000000000000000000 RELRO:libchromeshell.so (deleted)
W/google-breakpad(26491): M 9B4B6000 02D0A000 00016000 000000000000000000000000000000000 libchromeshell.so
W/google-breakpad(26491): M A47A3000 00000000 00011000 AC480D966558562B46D4583A55D904E60 libchromium_android_linker.so
W/google-breakpad(26491): M AC35D000 00000000 00003000 932CC9935B065A05D39E38681E0A5F2E0 libwebviewchromium_loader.so
W/google-breakpad(26491): M AC360000 00000000 00010000 E2C6CBE7D4588EF8111B01903B27FEA80 libandroid.so
W/google-breakpad(26491): M AC370000 00000000 00142000 83D249BAACD2F2C10C13B70C1F64252C0 libGLESv2_adreno.so
W/google-breakpad(26491): M AC4B3000 00000000 00034000 58A32EAAFDADB17139F988E96B860C8E0 libGLESv1_CM_adreno.so
W/google-breakpad(26491): M AC4E7000 00000000 00034000 C71008FE91C209D6D5E9EA5DBB44BF080 libgsl.so
W/google-breakpad(26491): M AC51B000 00000000 0002A000 134B50AAA945C8C16B0021DF014AA6150 libEGL_adreno.so
W/google-breakpad(26491): M ACE37000 00000000 00018000 9D372357993C7650365479A34E676E290 libjavacrypto.so
W/google-breakpad(26491): M ACE4F000 00000000 00009000 0D2147262F4305E3AED211CB96FC96BA0 librs_jni.so
W/google-breakpad(26491): M ACE58000 00000000 00006000 3F276EEAE72C2C9FC768FF2E482957510 libaudioeffect_jni.so
W/google-breakpad(26491): M ACE5E000 00000000 00004000 CDA9BA072D4DECC71C5E63467275E7EE0 libsoundpool.so
W/google-breakpad(26491): M ACE62000 00000000 0000E000 D02CB251CF8787A770DE2CFDC52A2B040 libstagefright_amrnb_common.so
W/google-breakpad(26491): M ACE70000 00000000 0001B000 F59669C665FE4B073886A8DAAECEA86F0 libvorbisidec.so
W/google-breakpad(26491): M ACE8B000 00000000 00004000 9FC00D0B150FE9FC57763A76206D1D550 libstagefright_yuv.so
W/google-breakpad(26491): M ACE90000 00000000 0001F000 C2D6408786A8582A0EAE64D047577F800 libstagefright_omx.so
W/google-breakpad(26491): M ACEAF000 00000000 00003000 E11DA546CE9E08D1D647E8E1135DAD810 libstagefright_enc_common.so
W/google-breakpad(26491): M ACEB2000 00000000 00007000 741CC494F5299870A1C62FD71E37AE5F0 libstagefright_avc_common.so
W/google-breakpad(26491): M ACEB9000 00000000 00005000 D3EA22EB9F383751AB500AE5951F0DB30 libpowermanager.so
W/google-breakpad(26491): M ACEBE000 00000000 0003C000 F19A7DFF3B6F3AF94EAE23CA21905BAD0 libopus.so
W/google-breakpad(26491): M ACEFA000 00000000 0001B000 87AFCC5E47ED503148F1AA03777E88590 libdrmframework.so
W/google-breakpad(26491): M ACF16000 00000000 00114000 A0D663218D972496B104B7B9FF0727BD0 libstagefright.so
W/google-breakpad(26491): M AD02A000 00000000 00016000 55B5F5E024DB37CABEC6A8F31DD950870 libmtp.so
W/google-breakpad(26491): M AD040000 00000000 0000B000 D2AB743CCCD8D2EB9B66A47707CC1E530 libjhead.so
W/google-breakpad(26491): M AD04C000 00000000 0002C000 4D1E2F0F58012FABA091A21E4CEEFFE20 libexif.so
W/google-breakpad(26491): M AD078000 00000000 0003C000 20D19E07A0CA5B5790EEB83C8F6915570 libmedia_jni.so
W/google-breakpad(26491): M AFE8A000 00000000 00003000 8FF5949AE957364C270D0F448DAD4FE20 libjnigraphics.so
W/google-breakpad(26491): M AFE8D000 00000000 00008000 F2B1298EE4C6EA0900CDACD17FB5C16B0 libcompiler_rt.so
W/google-breakpad(26491): M AFE95000 00000000 00004000 37FA52E92BF716E0268B9619EE8D61630 libadreno_utils.so
W/google-breakpad(26491): M AFE9B000 00000000 00003000 F36630BD0C6DC4B52A0E5D5D57BE682A0 memtrack.msm8960.so
W/google-breakpad(26491): M B15AB000 00000000 00038000 FE4EB304B0639D600DFB5871136831C50 libjavacore.so
W/google-breakpad(26491): M B4FC8000 00000000 00009000 CF0326786BDECFB45A519C7005E851000 libbacktrace_libc++.so
W/google-breakpad(26491): M B4FD2000 00000000 00304000 3E343A5B3F9534F5E40AD9BEAC46C8E80 libart.so
W/google-breakpad(26491): M B52F9000 00000000 00004000 3CBDF0DE27B9554508AD60FDC96CBC620 libusbhost.so
W/google-breakpad(26491): M B52FD000 00000000 00041000 36F280D15D51F4EEFA92279E8BBD84360 libssl.so
W/google-breakpad(26491): M B533E000 00000000 0005F000 D02DDA779C053EF3CC279A1E1789C4250 libsqlite.so
W/google-breakpad(26491): M B539E000 00000000 0000F000 F954BA248E12C9AF32F54434F977FEF80 libsoundtrigger.so
W/google-breakpad(26491): M B53AD000 00000000 0000E000 125671BDF56FEE67902BE338575373000 libselinux.so
W/google-breakpad(26491): M B53BB000 00000000 00004000 4E6C8C876BA563C3C4B0B3BA562093920 libprocessgroup.so
W/google-breakpad(26491): M B53BF000 00000000 0045B000 83C5B450634DDB5C4FC41CA61A35B3740 libpdfium.so
W/google-breakpad(26491): M B581F000 00000000 00004000 56B149396A4DAF176E26B4A85DA87BF30 libnetd_client.so
W/google-breakpad(26491): M B5823000 00000000 00007000 A20D742D5BF711D12587563B5C4BF64A0 libnativehelper.so
W/google-breakpad(26491): M B582A000 00000000 00004000 495F8887F27909EE1E3E69A657E0A9AB0 libnativebridge.so
W/google-breakpad(26491): M B582E000 00000000 0000C000 31B45FE1FA6CC789F945332C6FECF9750 libminikin.so
W/google-breakpad(26491): M B583A000 00000000 00003000 CCA8BE0D07D24523C8D02FEE5F724EA70 libmemtrack.so
W/google-breakpad(26491): M B583D000 00000000 00015000 60A6E0B998632198B80EB0941121CD710 libstagefright_foundation.so
W/google-breakpad(26491): M B5852000 00000000 00051000 6E42AB0836D73C21533C08A98EE7B24C0 libsonivox.so
W/google-breakpad(26491): M B58A8000 00000000 0000F000 E43E7FA869E4BCDAA3CC9601DF5A6A520 libcommon_time_client.so
W/google-breakpad(26491): M B58B7000 00000000 0000A000 C84019C90BCA7E95A773B5A75A460D880 libnbaio.so
W/google-breakpad(26491): M B58C1000 00000000 0009A000 895A37F76D93E51B0ED7E90E5B71A9330 libmedia.so
W/google-breakpad(26491): M B595B000 00000000 0003C000 C5323479053FDA41E355482925A30D120 libinputflinger.so
W/google-breakpad(26491): M B5997000 00000000 0001B000 74F168649BE8583159D23A6406D107740 libinput.so
W/google-breakpad(26491): M B59B2000 00000000 0000F000 41712F8718C430707F8CEE5532CB59200 libimg_utils.so
W/google-breakpad(26491): M B59C1000 00000000 00032000 89A4F06810290EEAF309C12642A3ECFA0 libjpeg.so
W/google-breakpad(26491): M B59F4000 00000000 0022F000 65E6AAFD915FB244BFE6BE6C4E5E3EC40 libskia.so
W/google-breakpad(26491): M B5C28000 00000000 0001D000 23FBB5490C5DBF1E99CD76AC2AA151410 libRScpp.so
W/google-breakpad(26491): M B5C45000 00000000 00028000 3BFE44EFE288C7A1AD7BE317B9F1BDBC0 libpng.so
W/google-breakpad(26491): M B5C6D000 00000000 0005A000 659F1470013A04F7702E4BAB65F034E70 libft2.so
W/google-breakpad(26491): M B5CC7000 00000000 0003D000 FB93884C5EC21F71C68861C20993EB6C0 libbcinfo.so
W/google-breakpad(26491): M B5D04000 00000000 00023000 21B734672A14ED6267B966640C16823E0 libbcc.so
W/google-breakpad(26491): M B5D47000 00000000 00094000 BE6F28596E6CE20F5E49A9E0BC824DA00 libc++.so
W/google-breakpad(26491): M B5DDD000 00000000 00938000 377A25164D6ACDC0F7A38F5E378EC8670 libLLVM.so
W/google-breakpad(26491): M B671C000 00000000 0003A000 8D7E15A890FAF52D874044C9F02C6D130 libRS.so
W/google-breakpad(26491): M B6756000 00000000 0004C000 670166E37528A7F183D1B05F52020ABD0 libhwui.so
W/google-breakpad(26491): M B67A2000 00000000 00110000 1B1FD653750DE88B86D7E83095EE37160 libicuuc.so
W/google-breakpad(26491): M B68B6000 00000000 00006000 F4F99E4A6E63BF8C8005D96B2BAC8CEB0 libgabi++.so
W/google-breakpad(26491): M B68BC000 00000000 00167000 237F53C12084A7F42405B410FDE8B4020 libicui18n.so
W/google-breakpad(26491): M B6A23000 00000000 00048000 AC5AE16EC01F4362C8E63DF66565090D0 libharfbuzz_ng.so
W/google-breakpad(26491): M B6A6B000 00000000 00005000 254351EC49125FE3A72F78EAB38381410 libwpa_client.so
W/google-breakpad(26491): M B6A70000 00000000 00007000 F8BA9819E3B7FA0BE155985B6C09FC570 libnetutils.so
W/google-breakpad(26491): M B6A77000 00000000 00006000 C08391F010B5A32265D4D781325FFCEE0 libhardware_legacy.so
W/google-breakpad(26491): M B6A7E000 00000000 00017000 B98E65710C415C83E972EBDC1EB52AC00 libexpat.so
W/google-breakpad(26491): M B6A95000 00000000 00102000 E26A420F0A5BCD2AC04E9B7B19F67C3D0 libcrypto.so
W/google-breakpad(26491): M B6B99000 00000000 00003000 914425D16565257955F7E1574360B71F0 libhardware.so
W/google-breakpad(26491): M B6B9C000 00000000 0000C000 4F3E1A188AE72585AF4278E4FA5266730 libui.so
W/google-breakpad(26491): M B6BA8000 00000000 00003000 2D9083CB8C22C02E1412DA13B1CA43AE0 libsync.so
W/google-breakpad(26491): M B6BAB000 00000000 0004F000 559E784386AC5E53A9D4D7F9916AA7F90 libgui.so
W/google-breakpad(26491): M B6BFA000 00000000 00008000 D8696CD80D9B725AFEA007DFCE2562E60 libcamera_metadata.so
W/google-breakpad(26491): M B6C02000 00000000 0003A000 116B760482930C77445ABAC1A3276D0B0 libcamera_client.so
W/google-breakpad(26491): M B6C3C000 00000000 00006000 AC1D054A26491BE96E8BCCB1E5F2926F0 libspeexresampler.so
W/google-breakpad(26491): M B6C42000 00000000 00006000 D330B25521C028B95D7E9360F7C6D6510 libaudioutils.so
W/google-breakpad(26491): M B6C48000 00000000 0001A000 03AD92B0BEDAA751C0016E97AE374CAE0 libz.so
W/google-breakpad(26491): M B6C62000 00000000 00030000 AC6C388A36224541CD74B35818111B760 libbinder.so
W/google-breakpad(26491): M B6C92000 00000000 00028000 102764B5F4D4D6F6F1A0C7360182BDEE0 libandroidfw.so
W/google-breakpad(26491): M B6CBA000 00000000 0000B000 E2F67EE50006FD0ED1482E1463C5CCFF0 libGLESv2.so
W/google-breakpad(26491): M B6CC5000 00000000 00007000 EFE6AB19F4060BCECF8CF0E68958C2F60 libGLESv1_CM.so
W/google-breakpad(26491): M B6CCC000 00000000 00004000 C91EAF69D18F0D499BD58532BBA173690 libETC1.so
W/google-breakpad(26491): M B6CD0000 00000000 00004000 7AE0C00FAEDEA3E81109CC784D49A6960 libunwind-ptrace.so
W/google-breakpad(26491): M B6CD4000 00000000 0000E000 EF89B10946BDF6079AAF789F56192FDA0 libunwind.so
W/google-breakpad(26491): M B6D28000 00000000 00007000 3874D35A672DF92604963290963F44990 libgccdemangle.so
W/google-breakpad(26491): M B6D31000 00000000 00008000 45B51BF91D330E793C9142C2617D7A8E0 libbacktrace.so
W/google-breakpad(26491): M B6D3A000 00000000 00018000 4939CC7D9325757DDAB52A218D55F4720 libutils.so
W/google-breakpad(26491): M B6D52000 00000000 0003B000 2FE003E5119C67BABE1A9FAB459A5A5D0 libstlport.so
W/google-breakpad(26491): M B6D8D000 00000000 0000D000 8AE85E0A2B96C0006F4BC72D01BDB7BD0 libcutils.so
W/google-breakpad(26491): M B6D9B000 00000000 00071000 A12BAF7D82BE28EC681730452D351E880 libGLES_trace.so
W/google-breakpad(26491): M B6E0C000 00000000 00068000 924D4C5446BF1132A902C15519E5C4FD0 libEGL.so
W/google-breakpad(26491): M B6E77000 00000000 000DC000 EE75A142ED1607624B6579D4590DD7CB0 libandroid_runtime.so
W/google-breakpad(26491): M B6F53000 00000000 00004000 DFCD7772F3A5BD1E84A50C4DBFDE6F570 libstdc++.so
W/google-breakpad(26491): M B6F57000 00000000 00019000 AE3467401278371A956801500FC8187D0 libm.so
W/google-breakpad(26491): M B6F71000 00000000 00007000 0A492DEF82842051996A468D87F23F010 liblog.so
W/google-breakpad(26491): M B6F79000 00000000 0005A000 10EC186B04E97F6A24DAA891779479380 libc.so
W/google-breakpad(26491): M B6FDD000 00000000 00003000 D773C773634B82249E887ECBC5D28C900 libsigchain.so
W/google-breakpad(26491): -----END BREAKPAD MICRODUMP-----
W/google-breakpad(26354): ### ### ### ### ### ### ### ### ### ### ### ### ###
W/google-breakpad(26354): Chrome build fingerprint:
W/google-breakpad(26354): Developer Build
W/google-breakpad(26354): 1
W/google-breakpad(26354): ### ### ### ### ### ### ### ### ### ### ### ### ###
--------- beginning of crash
F/libc (26354): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 26375 (CrRendererMain)
D/audio_hw_primary( 195): disable_audio_route: reset and update mixer path: low-latency-playback
D/audio_hw_primary( 195): disable_snd_device: snd_device(2: speaker)
I/DEBUG (17356): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG (17356): Build fingerprint: 'google/occam/mako:5.0/LRX21J/1543521:userdebug/dev-keys'
I/DEBUG (17356): Revision: '10'
I/DEBUG (17356): ABI: 'arm'
I/DEBUG (17356): pid: 26354, tid: 26375, name: CrRendererMain >>> org.chromium.chrome.shell:sandboxed_process0 <<<
I/DEBUG (17356): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0
I/DEBUG (17356): r0 a48bd850 r1 0000002f r2 00000001 r3 00000000
I/DEBUG (17356): r4 a48bd850 r5 a48bd868 r6 9b4b6a68 r7 a48bdc48
I/DEBUG (17356): r8 a48bd84c r9 00000001 sl b6fd3dd4 fp a48bdd48
I/DEBUG (17356): ip 989da1f3 sp a48bd840 lr 9a36c1f9 pc 9a36a996 cpsr 68000030
I/DEBUG (17356):
I/DEBUG (17356): backtrace:
I/DEBUG (17356): #00 pc 01bbf996 /data/app/org.chromium.chrome.shell-1/lib/arm/libchromeshell.so
I/DEBUG (17356):
I/DEBUG (17356): Tombstone written to: /data/tombstones/tombstone_00
W

View file

@ -0,0 +1,249 @@
MODULE Linux arm 76304586D0CD2C8FF899C602BF1756A20 libchromeshell.so
FILE 46 /s/chrome-brkpad/src/out/Debug/../../base/bits.h
FILE 47 /s/chrome-brkpad/src/out/Debug/../../base/build_time.cc
FILE 48 /s/chrome-brkpad/src/out/Debug/../../base/callback.h
FILE 177 /s/chrome-brkpad/src/out/Debug/../../base/memory/weak_ptr.h
FILE 178 /s/chrome-brkpad/src/out/Debug/../../base/message_loop/incoming_task_queue.cc
FILE 179 /s/chrome-brkpad/src/out/Debug/../../base/message_loop/message_loop.cc
FILE 183 /s/chrome-brkpad/src/out/Debug/../../base/message_loop/message_pump.cc
FILE 184 /s/chrome-brkpad/src/out/Debug/../../base/message_loop/message_pump_android.cc
FILE 185 /s/chrome-brkpad/src/out/Debug/../../base/message_loop/message_pump_default.cc
FILE 272 /s/chrome-brkpad/src/out/Debug/../../base/rand_util.cc
FILE 273 /s/chrome-brkpad/src/out/Debug/../../base/rand_util_posix.cc
FILE 274 /s/chrome-brkpad/src/out/Debug/../../base/run_loop.cc
FILE 275 /s/chrome-brkpad/src/out/Debug/../../base/safe_strerror_posix.cc
FILE 384 /s/chrome-brkpad/src/out/Debug/../../base/tracking_info.h
FILE 385 /s/chrome-brkpad/src/out/Debug/../../base/tuple.h
FILE 2458 /s/chrome-brkpad/src/out/Debug/../../content/app/android/content_main.cc
FILE 2459 /s/chrome-brkpad/src/out/Debug/../../content/app/android/library_loader_hooks.cc
FILE 2460 /s/chrome-brkpad/src/out/Debug/../../content/app/content_main_runner.cc
FILE 3100 /s/chrome-brkpad/src/out/Debug/../../content/child/child_shared_bitmap_manager.cc
FILE 3101 /s/chrome-brkpad/src/out/Debug/../../content/child/child_thread.cc
FILE 3102 /s/chrome-brkpad/src/out/Debug/../../content/child/child_thread.h
FILE 3103 /s/chrome-brkpad/src/out/Debug/../../content/child/content_child_helpers.cc
FILE 3366 /s/chrome-brkpad/src/out/Debug/../../content/common/message_router.cc
FILE 3398 /s/chrome-brkpad/src/out/Debug/../../content/common/ssl_status_serialization.cc
FILE 3402 /s/chrome-brkpad/src/out/Debug/../../content/common/user_agent.cc
FILE 3403 /s/chrome-brkpad/src/out/Debug/../../content/common/utility_messages.h
FILE 3808 /s/chrome-brkpad/src/out/Debug/../../content/renderer/render_frame_impl.cc
FILE 3822 /s/chrome-brkpad/src/out/Debug/../../content/renderer/renderer_blink_platform_impl.cc
FILE 3823 /s/chrome-brkpad/src/out/Debug/../../content/renderer/renderer_clipboard_client.cc
FILE 3824 /s/chrome-brkpad/src/out/Debug/../../content/renderer/renderer_main.cc
FILE 4111 /s/chrome-brkpad/src/out/Debug/../../ipc/ipc_channel_handle.h
FILE 4112 /s/chrome-brkpad/src/out/Debug/../../ipc/ipc_channel_posix.cc
FILE 4113 /s/chrome-brkpad/src/out/Debug/../../ipc/ipc_channel_proxy.cc
FUNC 241df8 4 0 xsltStrxfrm
FUNC 241dfc 1c 0 base::debug::StackTrace::StackTrace
242378 2 1361 76
24237a 22 1361 76
24239c 10 26 75
FUNC 2423ac 1fc 0 base::debug::TaskAnnotator::RunTask
2423b6 2 31 75
24254a 4 60 75
24254e 6 401 48
25e6bc c 208 179
FUNC 25e6c8 1a 0 base::MessageLoop::Run
25e6c8 4 306 179
25e6cc 6 307 179
25e6d2 6 308 179
25e6d8 6 308 179
FUNC 25ed20 128 0 base::MessageLoop::RunTask
25ed20 c 432 179
25ed2c 2 432 179
25edca 6 444 179
25edd0 12 447 179
25ede2 a 192 16276
FUNC 25ee48 140 0 base::MessageLoop::DeferOrRunPendingTask
25ee48 4 454 179
25ee4c 4 455 179
25ee64 8 456 179
25ee6c 6 459 179
25ee72 a 672 16220
25ee88 14 1061 16220
25fb9e 1e 372 179
FUNC 25fbbc 70 0 base::MessageLoop::RunHandler
25fbfc 6 405 179
25fc02 8 415 179
25fc0a 6 415 179
FUNC 2601e2 98 0 base::MessageLoop::DoWork
2601e2 4 544 179
26023a 2 562 179
26023c 8 563 179
260244 8 563 179
26024c c 565 179
260258 8 566 179
26031c 8 158 179
FUNC 260840 104 0 base::MessagePumpDefault::Run
26088e 4 36 185
260892 8 32 185
26089a 2 33 185
26d14a 1e 92 274
FUNC 26d168 30 0 base::RunLoop::Run
26d168 4 47 274
26d17c 6 54 274
26d30c 6 43 314
26d312 6 12 280
71338c 6 420 4113
713392 1e 421 4113
FUNC 7133b0 188 0 IPC::ChannelProxy::Context::OnDispatchMessage
7134ce 4 270 4113
7134d2 8 271 4113
7134da a 274 4113
FUNC a497e8 26 0 content::MessageRouter::RouteMessage
a497e8 2 49 3366
a497ea 2 49 3366
a497f6 8 50 3366
a497fe 2 51 3366
a49800 8 54 3366
1a0d70a a 96 357
FUNC 1a0d714 264 0 content::ChildThread::OnMessageReceived
1a0d714 2 464 3101
1a0d918 a 502 3101
1bbf942 6 92 3807
1bbf948 6 92 3807
1bbf976 1e 95 3807
FUNC 1bbf994 6 0 content::::CrashIntentionally
1bbf994 6 267 3808
1bc116c 6 156 16266
1bc1172 1e 1484 3808
FUNC 1bc1190 19c 0 content::::MaybeHandleDebugURL
1bc11ee 6 309 3808
1bc11f4 4 310 3808
1bc11f8 10 311 3808
FUNC 1bc2102 106 0 content::RenderFrameImpl::PrepareRenderViewForNavigation
1bc2102 8 4007 3808
1bc210a 2 4008 3808
1bc210c 4 4009 3808
1bc2110 8 4007 3808
1bc2118 4 4008 3808
FUNC 1bc8324 c7c 0 content::RenderFrameImpl::OnMessageReceived
1bc8324 c 854 3808
1bc8330 2 860 3808
1bc85be 8 378 3264
1bc85c6 4 378 3264
1bc85ca 8 548 385
1bc85d2 a 80 385
FUNC 1bc909c 7e0 0 content::RenderFrameImpl::OnNavigate
1bc909c c 925 3808
1bc912c 2 932 3808
1bc912e 20 936 3808
1bc914e 6 933 3808
1bc91be 12 945 3808
FUNC 1be39f8 3ec 0 content::RendererMain
1be39f8 12 103 3824
1be3d0e 4 235 3824
1be3d12 c 236 3824
1be3d1e 6 225 3824
1d96e7e 2 248 169
1d96e80 2c 54 2458
FUNC 1d96eac 17c 0 content::Start
1d96fc6 2 48 2458
1d96fc8 4 48 2458
1d96fcc 2 1464 76
1d973f8 28 822 2460
FUNC 1d97420 fc 0 content::RunNamedProcessTypeMain
1d97420 c 386 2460
1d9746e e 423 2460
1d9747c c 411 2460
1d97488 8 417 2460
1d974e4 38 440 2460
FUNC 1d9751c d0 0 content::ContentMainRunnerImpl::Run
1d9751c e 772 2460
1d975b2 6 789 2460
1d975b8 6 156 16266
STACK CFI INIT 242330 7c .cfa: sp 0 + .ra: lr
STACK CFI INIT 2423ac 1fc .cfa: sp 0 + .ra: lr
STACK CFI 2423b0 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI 2423b2 .cfa: sp 208 +
STACK CFI INIT 25e6bc c .cfa: sp 0 + .ra: lr
STACK CFI INIT 0 18 .cfa: sp 0 + .ra: lr
STACK CFI INIT 25e6c8 1a .cfa: sp 0 + .ra: lr
STACK CFI 25e6ca .cfa: sp 8 + .ra: .cfa -4 + ^ r4: .cfa -8 + ^
STACK CFI 25e6cc .cfa: sp 32 +
STACK CFI INIT 25ed20 128 .cfa: sp 0 + .ra: lr
STACK CFI 25ed24 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
STACK CFI 25ed2c .cfa: sp 208 +
STACK CFI 25ee2a .cfa: sp 20 +
STACK CFI INIT 25ee48 140 .cfa: sp 0 + .ra: lr
STACK CFI 25ee4c .cfa: sp 48 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI INIT 25effc 24 .cfa: sp 0 + .ra: lr
STACK CFI 25fb1c .cfa: sp 216 +
STACK CFI 25fbac .cfa: sp 28 +
STACK CFI INIT 25fbbc 70 .cfa: sp 0 + .ra: lr
STACK CFI 25fbbe .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
STACK CFI 25fbc2 .cfa: sp 200 +
STACK CFI 25fc1e .cfa: sp 16 +
STACK CFI INIT 2601e2 98 .cfa: sp 0 + .ra: lr
STACK CFI 2601e6 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
STACK CFI 2601ec .cfa: sp 80 +
STACK CFI 108 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
STACK CFI 10a .cfa: sp 24 +
STACK CFI INIT 260840 104 .cfa: sp 0 + .ra: lr
STACK CFI 260846 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI 26084e .cfa: sp 232 +
STACK CFI 260930 .cfa: sp 36 +
STACK CFI 26d0fc .cfa: sp 184 +
STACK CFI 26d158 .cfa: sp 16 +
STACK CFI INIT 26d168 30 .cfa: sp 0 + .ra: lr
STACK CFI 26d16a .cfa: sp 12 + .ra: .cfa -4 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
STACK CFI 26d16c .cfa: sp 48 +
STACK CFI 2ce518 .cfa: sp 192 +
STACK CFI 2ce562 .cfa: sp 16 +
STACK CFI INIT 7133b0 188 .cfa: sp 0 + .ra: lr
STACK CFI 7133b4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI 7133ba .cfa: sp 176 +
STACK CFI 71351e .cfa: sp 36 +
STACK CFI INIT 22f794 58 .cfa: sp 0 + .ra: lr
STACK CFI a497c6 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
STACK CFI a497e0 .cfa: sp 0 + .ra: .ra r4: r4 r5: r5 r6: r6
STACK CFI INIT a497e8 26 .cfa: sp 0 + .ra: lr
STACK CFI a497ea .cfa: sp 16 + .ra: .cfa -4 + ^ r3: .cfa -16 + ^ r4: .cfa -12 + ^ r5: .cfa -8 + ^
STACK CFI INIT 0 46 .cfa: sp 0 + .ra: lr
STACK CFI 2 .cfa: sp 24 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
STACK CFI 44 .cfa: sp 16 +
STACK CFI 394494 .cfa: sp 16 +
STACK CFI INIT 1a0d714 264 .cfa: sp 0 + .ra: lr
STACK CFI 1a0d716 .cfa: sp 20 + .ra: .cfa -4 + ^ r4: .cfa -20 + ^ r5: .cfa -16 + ^ r6: .cfa -12 + ^ r7: .cfa -8 + ^
STACK CFI 1a0d71c .cfa: sp 80 +
STACK CFI 1a0d924 .cfa: sp 20 +
STACK CFI INIT 1a0d978 78 .cfa: sp 0 + .ra: lr
STACK CFI INIT 0 2 .cfa: sp 0 + .ra: lr
STACK CFI INIT 1bbf994 6 .cfa: sp 0 + .ra: lr
STACK CFI INIT 1bc1190 19c .cfa: sp 0 + .ra: lr
STACK CFI 1bc1194 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI 1bc119e .cfa: sp 184 +
STACK CFI 1bc1338 .cfa: sp 112 +
STACK CFI INIT 1bc2102 106 .cfa: sp 0 + .ra: lr
STACK CFI 1bc2106 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
STACK CFI 1bc210a .cfa: sp 56 +
STACK CFI 1bc2204 .cfa: sp 28 +
STACK CFI INIT 1bc2208 6c .cfa: sp 0 + .ra: lr
STACK CFI INIT 1bc8324 c7c .cfa: sp 0 + .ra: lr
STACK CFI 1bc8328 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI 1bc8338 .cfa: sp 1216 +
STACK CFI c0 .cfa: sp 24 +
STACK CFI INIT 1bc909c 7e0 .cfa: sp 0 + .ra: lr
STACK CFI 1bc90a4 .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI 1bc90b2 .cfa: sp 560 +
STACK CFI 108 .cfa: sp 32 + .ra: .cfa -4 + ^ r4: .cfa -24 + ^ r5: .cfa -20 + ^ r6: .cfa -16 + ^ r7: .cfa -12 + ^ r8: .cfa -8 + ^
STACK CFI 10a .cfa: sp 24 +
STACK CFI INIT 28a980 28 .cfa: sp 0 + .ra: lr
STACK CFI 28a982 .cfa: sp 16 + .ra: .cfa -4 + ^ r4: .cfa -16 + ^ r5: .cfa -12 + ^ r6: .cfa -8 + ^
STACK CFI INIT 1be39f8 3ec .cfa: sp 0 + .ra: lr
STACK CFI 1be39fc .cfa: sp 36 + .ra: .cfa -4 + ^ r10: .cfa -12 + ^ r11: .cfa -8 + ^ r4: .cfa -36 + ^ r5: .cfa -32 + ^ r6: .cfa -28 + ^ r7: .cfa -24 + ^ r8: .cfa -20 + ^ r9: .cfa -16 + ^
STACK CFI 1be3a0a .cfa: sp 664 +
STACK CFI 1be3d78 .cfa: sp 36 +
STACK CFI 1d96e8e .cfa: sp 20 +
STACK CFI INIT 1d96eac 17c .cfa: sp 0 + .ra: lr
STACK CFI 1d96eb2 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
STACK CFI 1d96ebc .cfa: sp 280 +
STACK CFI 1d96ffa .cfa: sp 28 +
STACK CFI INIT 22f794 58 .cfa: sp 0 + .ra: lr
STACK CFI 231cb6 .cfa: sp 28 +
STACK CFI INIT 1d97420 fc .cfa: sp 0 + .ra: lr
STACK CFI 1d97424 .cfa: sp 32 + .ra: .cfa -4 + ^ r10: .cfa -8 + ^ r4: .cfa -32 + ^ r5: .cfa -28 + ^ r6: .cfa -24 + ^ r7: .cfa -20 + ^ r8: .cfa -16 + ^ r9: .cfa -12 + ^
STACK CFI 1d97432 .cfa: sp 200 +
STACK CFI 1d974f2 .cfa: sp 32 +
STACK CFI INIT 1d9751c d0 .cfa: sp 0 + .ra: lr
STACK CFI 1d97522 .cfa: sp 28 + .ra: .cfa -4 + ^ r4: .cfa -28 + ^ r5: .cfa -24 + ^ r6: .cfa -20 + ^ r7: .cfa -16 + ^ r8: .cfa -12 + ^ r9: .cfa -8 + ^
STACK CFI 1d9752a .cfa: sp 232 +