Merge branch 'feature/py3_espcoredump' into 'master'

espcoredump: Add tests and Python3 support

See merge request idf/esp-idf!3212
This commit is contained in:
Ivan Grokhotkov 2018-09-14 12:39:30 +08:00
commit 31c14a5ee4
8 changed files with 836 additions and 51 deletions

View file

@ -446,6 +446,18 @@ test_esp_err_to_name_on_host:
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 ./gen_esp_err_to_name.py - ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh -p 3.4.8 ./gen_esp_err_to_name.py
- git diff --exit-code -- ../components/esp32/esp_err_to_name.c || (echo 'Differences found between running under Python 2 and 3.'; exit 1) - git diff --exit-code -- ../components/esp32/esp_err_to_name.c || (echo 'Differences found between running under Python 2 and 3.'; exit 1)
test_espcoredump:
<<: *host_test_template
artifacts:
when: always
paths:
- components/espcoredump/test/.coverage
- components/espcoredump/test/output
expire_in: 1 week
script:
- cd components/espcoredump/test/
- ${IDF_PATH}/tools/ci/multirun_with_pyenv.sh ./test_espcoredump.sh
push_to_github: push_to_github:
stage: deploy stage: deploy
image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG image: $CI_DOCKER_REGISTRY/esp32-ci-env$BOT_DOCKER_IMAGE_TAG

View file

@ -2,6 +2,19 @@
# #
# ESP32 core dump Utility # ESP32 core dump Utility
from __future__ import print_function
from __future__ import unicode_literals
from __future__ import division
try:
from builtins import zip
from builtins import str
from builtins import range
from past.utils import old_div
from builtins import object
except ImportError:
print('Import has failed probably because of the missing "future" package. Please install all the packages for '
'interpreter {} from the $IDF_PATH/requirements.txt file.'.format(sys.executable))
sys.exit(1)
import sys import sys
import os import os
import argparse import argparse
@ -19,7 +32,7 @@ if idf_path:
try: try:
import esptool import esptool
except ImportError: except ImportError:
print "Esptool is not found! Set proper $IDF_PATH in environment." print("Esptool is not found! Set proper $IDF_PATH in environment.")
sys.exit(2) sys.exit(2)
__version__ = "0.2-dev" __version__ = "0.2-dev"
@ -103,7 +116,7 @@ class Elf32FileHeader(BinStruct):
super(Elf32FileHeader, self).__init__(buf) super(Elf32FileHeader, self).__init__(buf)
if buf is None: if buf is None:
# Fill in sane ELF header for LSB32 # Fill in sane ELF header for LSB32
self.e_ident = "\x7fELF\1\1\1\0\0\0\0\0\0\0\0\0" self.e_ident = b"\x7fELF\1\1\1\0\0\0\0\0\0\0\0\0"
self.e_version = ESPCoreDumpElfFile.EV_CURRENT self.e_version = ESPCoreDumpElfFile.EV_CURRENT
self.e_ehsize = self.sizeof() self.e_ehsize = self.sizeof()
@ -292,7 +305,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
except struct.error as e: except struct.error as e:
raise ESPCoreDumpError("Failed to read a valid ELF header from %s: %s" % (self.name, e)) raise ESPCoreDumpError("Failed to read a valid ELF header from %s: %s" % (self.name, e))
if ident[0] != '\x7f' or ident[1:4] != 'ELF': if bytearray([ident[0]]) != b'\x7f' or ident[1:4] != b'ELF':
raise ESPCoreDumpError("%s has invalid ELF magic header" % self.name) raise ESPCoreDumpError("%s has invalid ELF magic header" % self.name)
if machine != self.EM_XTENSA: if machine != self.EM_XTENSA:
raise ESPCoreDumpError("%s does not appear to be an Xtensa ELF file. e_machine=%04x" % (self.name, machine)) raise ESPCoreDumpError("%s does not appear to be an Xtensa ELF file. e_machine=%04x" % (self.name, machine))
@ -314,7 +327,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
if len(section_header) == 0: if len(section_header) == 0:
raise ESPCoreDumpError("No section header found at offset %04x in ELF file." % section_header_offs) raise ESPCoreDumpError("No section header found at offset %04x in ELF file." % section_header_offs)
if len(section_header) % LEN_SEC_HEADER != 0: if len(section_header) % LEN_SEC_HEADER != 0:
print 'WARNING: Unexpected ELF section header length %04x is not mod-%02x' % (len(section_header),LEN_SEC_HEADER) print('WARNING: Unexpected ELF section header length %04x is not mod-%02x' % (len(section_header),LEN_SEC_HEADER))
# walk through the section header and extract all sections # walk through the section header and extract all sections
section_header_offsets = range(0, len(section_header), LEN_SEC_HEADER) section_header_offsets = range(0, len(section_header), LEN_SEC_HEADER)
@ -330,7 +343,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
raise ESPCoreDumpError("ELF file has no STRTAB section at shstrndx %d" % shstrndx) raise ESPCoreDumpError("ELF file has no STRTAB section at shstrndx %d" % shstrndx)
_,sec_type,_,_,sec_size,sec_offs = read_section_header(shstrndx * LEN_SEC_HEADER) _,sec_type,_,_,sec_size,sec_offs = read_section_header(shstrndx * LEN_SEC_HEADER)
if sec_type != esptool.ELFFile.SEC_TYPE_STRTAB: if sec_type != esptool.ELFFile.SEC_TYPE_STRTAB:
print 'WARNING: ELF file has incorrect STRTAB section type 0x%02x' % sec_type print('WARNING: ELF file has incorrect STRTAB section type 0x%02x' % sec_type)
f.seek(sec_offs) f.seek(sec_offs)
string_table = f.read(sec_size) string_table = f.read(sec_size)
@ -338,7 +351,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
# string table section, and actual data for each section from the ELF file itself # string table section, and actual data for each section from the ELF file itself
def lookup_string(offs): def lookup_string(offs):
raw = string_table[offs:] raw = string_table[offs:]
return raw[:raw.index('\x00')] return raw[:raw.index(b'\x00')]
def read_data(offs,size): def read_data(offs,size):
f.seek(offs) f.seek(offs)
@ -357,7 +370,7 @@ class ESPCoreDumpElfFile(esptool.ELFFile):
if len(seg_table) == 0: if len(seg_table) == 0:
raise ESPCoreDumpError("No program header table found at offset %04x in ELF file." % seg_table_offs) raise ESPCoreDumpError("No program header table found at offset %04x in ELF file." % seg_table_offs)
if len(seg_table) % LEN_SEG_HEADER != 0: if len(seg_table) % LEN_SEG_HEADER != 0:
print 'WARNING: Unexpected ELF program header table length %04x is not mod-%02x' % (len(seg_table),LEN_SEG_HEADER) print('WARNING: Unexpected ELF program header table length %04x is not mod-%02x' % (len(seg_table),LEN_SEG_HEADER))
# walk through the program segment table and extract all segments # walk through the program segment table and extract all segments
seg_table_offs = range(0, len(seg_table), LEN_SEG_HEADER) seg_table_offs = range(0, len(seg_table), LEN_SEG_HEADER)
@ -551,7 +564,7 @@ class ESPCoreDumpLoader(object):
os.remove(fname) os.remove(fname)
except OSError as e: except OSError as e:
if e.errno != errno.ENOENT: if e.errno != errno.ENOENT:
print "Warning failed to remove temp file '%s' (%d)!" % (fname, e.errno) print("Warning failed to remove temp file '%s' (%d)!" % (fname, e.errno))
def cleanup(self): def cleanup(self):
"""Cleans up loader resources """Cleans up loader resources
@ -569,7 +582,7 @@ class ESPCoreDumpLoader(object):
tot_len,task_num,tcbsz = struct.unpack_from(self.ESP32_COREDUMP_HDR_FMT, data) tot_len,task_num,tcbsz = struct.unpack_from(self.ESP32_COREDUMP_HDR_FMT, data)
tcbsz_aligned = tcbsz tcbsz_aligned = tcbsz
if tcbsz_aligned % 4: if tcbsz_aligned % 4:
tcbsz_aligned = 4*(tcbsz_aligned/4 + 1) tcbsz_aligned = 4*(old_div(tcbsz_aligned,4) + 1)
core_off += self.ESP32_COREDUMP_HDR_SZ core_off += self.ESP32_COREDUMP_HDR_SZ
core_elf = ESPCoreDumpElfFile() core_elf = ESPCoreDumpElfFile()
notes = b'' notes = b''
@ -585,7 +598,7 @@ class ESPCoreDumpLoader(object):
stack_len_aligned = stack_len stack_len_aligned = stack_len
if stack_len_aligned % 4: if stack_len_aligned % 4:
stack_len_aligned = 4*(stack_len_aligned/4 + 1) stack_len_aligned = 4*(old_div(stack_len_aligned,4) + 1)
core_off += self.ESP32_COREDUMP_TSK_HDR_SZ core_off += self.ESP32_COREDUMP_TSK_HDR_SZ
data = self.read_data(core_off, tcbsz_aligned) data = self.read_data(core_off, tcbsz_aligned)
@ -602,7 +615,7 @@ class ESPCoreDumpLoader(object):
try: try:
task_regs = self._get_registers_from_stack(data, stack_end > stack_top) task_regs = self._get_registers_from_stack(data, stack_end > stack_top)
except Exception as e: except Exception as e:
print e print(e)
return None return None
prstatus = XtensaPrStatus() prstatus = XtensaPrStatus()
prstatus.pr_cursig = 0 # TODO: set sig only for current/failed task prstatus.pr_cursig = 0 # TODO: set sig only for current/failed task
@ -659,7 +672,7 @@ class ESPCoreDumpFileLoader(ESPCoreDumpLoader):
line = fb64.readline() line = fb64.readline()
if len(line) == 0: if len(line) == 0:
break break
data = base64.standard_b64decode(line.rstrip('\r\n')) data = base64.standard_b64decode(line.rstrip(b'\r\n'))
fcore.write(data) fcore.write(data)
fcore.close() fcore.close()
fcore = open(self.fcore_name, 'rb') fcore = open(self.fcore_name, 'rb')
@ -717,18 +730,18 @@ class ESPCoreDumpFlashLoader(ESPCoreDumpLoader):
tool_args[-1] = self.fcore_name tool_args[-1] = self.fcore_name
# read core dump length # read core dump length
et_out = subprocess.check_output(tool_args) et_out = subprocess.check_output(tool_args)
print et_out print(et_out.decode('utf-8'))
f = os.fdopen(fhnd, 'rb') f = os.fdopen(fhnd, 'rb')
self.dump_sz = self._read_core_dump_length(f) self.dump_sz = self._read_core_dump_length(f)
# read core dump # read core dump
tool_args[-2] = str(self. dump_sz) tool_args[-2] = str(self. dump_sz)
et_out = subprocess.check_output(tool_args) et_out = subprocess.check_output(tool_args)
print et_out print(et_out.decode('utf-8'))
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print "esptool script execution failed with err %d" % e.returncode print("esptool script execution failed with err %d" % e.returncode)
print "Command ran: '%s'" % e.cmd print("Command ran: '%s'" % e.cmd)
print "Command out:" print("Command out:")
print e.output print(e.output)
if self.fcore_name: if self.fcore_name:
self.remove_tmp_file(self.fcore_name) self.remove_tmp_file(self.fcore_name)
raise e raise e
@ -773,7 +786,7 @@ class GDBMIOutRecordHandler(object):
"""Base method to execute GDB/MI output record handler function """Base method to execute GDB/MI output record handler function
""" """
if self.verbose: if self.verbose:
print "%s.execute: [[%s]]" % (self.__class__.__name__, ln) print("%s.execute: [[%s]]" % (self.__class__.__name__, ln))
class GDBMIOutStreamHandler(GDBMIOutRecordHandler): class GDBMIOutStreamHandler(GDBMIOutRecordHandler):
@ -823,7 +836,7 @@ class GDBMIResultHandler(GDBMIOutRecordHandler):
if self.result_str.startswith(','): if self.result_str.startswith(','):
self.result_str = self.result_str[1:] self.result_str = self.result_str[1:]
else: else:
print "Invalid result format: '%s'" % ln print("Invalid result format: '%s'" % ln)
else: else:
self.result_str = '' self.result_str = ''
return True return True
@ -843,7 +856,7 @@ class GDBMIResultHandler(GDBMIOutRecordHandler):
return return
if self._parse_rc(ln, self.RC_EXIT): if self._parse_rc(ln, self.RC_EXIT):
return return
print "Unknown GDB/MI result: '%s'" % ln print("Unknown GDB/MI result: '%s'" % ln)
class GDBMIStreamConsoleHandler(GDBMIOutStreamHandler): class GDBMIStreamConsoleHandler(GDBMIOutStreamHandler):
@ -873,7 +886,7 @@ def dbg_corefile(args):
loader = ESPCoreDumpFlashLoader(args.off, port=args.port) loader = ESPCoreDumpFlashLoader(args.off, port=args.port)
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf) core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
if not core_fname: if not core_fname:
print "Failed to create corefile!" print("Failed to create corefile!")
loader.cleanup() loader.cleanup()
return return
else: else:
@ -882,7 +895,7 @@ def dbg_corefile(args):
loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64') loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64')
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf) core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
if not core_fname: if not core_fname:
print "Failed to create corefile!" print("Failed to create corefile!")
loader.cleanup() loader.cleanup()
return return
@ -902,7 +915,7 @@ def dbg_corefile(args):
if not args.core and not args.save_core: if not args.core and not args.save_core:
loader.remove_tmp_file(core_fname) loader.remove_tmp_file(core_fname)
loader.cleanup() loader.cleanup()
print 'Done!' print('Done!')
def info_corefile(args): def info_corefile(args):
@ -915,7 +928,7 @@ def info_corefile(args):
def gdbmi_read2prompt(f, out_handlers=None): def gdbmi_read2prompt(f, out_handlers=None):
while True: while True:
ln = f.readline().rstrip(' \r\n') ln = f.readline().decode('utf-8').rstrip(' \r\n')
if ln == '(gdb)': if ln == '(gdb)':
break break
elif len(ln) == 0: elif len(ln) == 0:
@ -948,15 +961,15 @@ def info_corefile(args):
def gdbmi_getinfo(p, handlers, gdb_cmd): def gdbmi_getinfo(p, handlers, gdb_cmd):
for t in handlers: for t in handlers:
handlers[t].result_class = None handlers[t].result_class = None
p.stdin.write("-interpreter-exec console \"%s\"\n" % gdb_cmd) p.stdin.write(bytearray("-interpreter-exec console \"%s\"\n" % gdb_cmd, encoding='utf-8'))
gdbmi_read2prompt(p.stdout, handlers) gdbmi_read2prompt(p.stdout, handlers)
if not handlers[GDBMIResultHandler.TAG].result_class or handlers[GDBMIResultHandler.TAG].result_class == GDBMIResultHandler.RC_EXIT: if not handlers[GDBMIResultHandler.TAG].result_class or handlers[GDBMIResultHandler.TAG].result_class == GDBMIResultHandler.RC_EXIT:
print "GDB exited (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str) print("GDB exited (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str))
p.wait() p.wait()
print "Problem occured! GDB exited, restart it." print("Problem occured! GDB exited, restart it.")
p = gdbmi_start(handlers, []) p = gdbmi_start(handlers, [])
elif handlers[GDBMIResultHandler.TAG].result_class != GDBMIResultHandler.RC_DONE: elif handlers[GDBMIResultHandler.TAG].result_class != GDBMIResultHandler.RC_DONE:
print "GDB/MI command failed (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str) print("GDB/MI command failed (%s / %s)!" % (handlers[GDBMIResultHandler.TAG].result_class, handlers[GDBMIResultHandler.TAG].result_str))
return p return p
loader = None loader = None
@ -965,7 +978,7 @@ def info_corefile(args):
loader = ESPCoreDumpFlashLoader(args.off, port=args.port) loader = ESPCoreDumpFlashLoader(args.off, port=args.port)
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf) core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
if not core_fname: if not core_fname:
print "Failed to create corefile!" print("Failed to create corefile!")
loader.cleanup() loader.cleanup()
return return
else: else:
@ -974,7 +987,7 @@ def info_corefile(args):
loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64') loader = ESPCoreDumpFileLoader(core_fname, args.core_format == 'b64')
core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf) core_fname = loader.create_corefile(args.save_core, rom_elf=rom_elf)
if not core_fname: if not core_fname:
print "Failed to create corefile!" print("Failed to create corefile!")
loader.cleanup() loader.cleanup()
return return
@ -1028,43 +1041,43 @@ def info_corefile(args):
handlers[GDBMIStreamConsoleHandler.TAG] = GDBMIStreamConsoleHandler(None, verbose=False) handlers[GDBMIStreamConsoleHandler.TAG] = GDBMIStreamConsoleHandler(None, verbose=False)
p = gdbmi_start(handlers, [rom_sym_cmd]) p = gdbmi_start(handlers, [rom_sym_cmd])
print "===============================================================" print("===============================================================")
print "==================== ESP32 CORE DUMP START ====================" print("==================== ESP32 CORE DUMP START ====================")
handlers[GDBMIResultHandler.TAG].result_class = None handlers[GDBMIResultHandler.TAG].result_class = None
handlers[GDBMIStreamConsoleHandler.TAG].func = gdbmi_console_stream_handler handlers[GDBMIStreamConsoleHandler.TAG].func = gdbmi_console_stream_handler
print "\n================== CURRENT THREAD REGISTERS ===================" print("\n================== CURRENT THREAD REGISTERS ===================")
p = gdbmi_getinfo(p, handlers, "info registers") p = gdbmi_getinfo(p, handlers, "info registers")
print "\n==================== CURRENT THREAD STACK =====================" print("\n==================== CURRENT THREAD STACK =====================")
p = gdbmi_getinfo(p, handlers, "bt") p = gdbmi_getinfo(p, handlers, "bt")
print "\n======================== THREADS INFO =========================" print("\n======================== THREADS INFO =========================")
p = gdbmi_getinfo(p, handlers, "info threads") p = gdbmi_getinfo(p, handlers, "info threads")
print "\n======================= ALL MEMORY REGIONS ========================" print("\n======================= ALL MEMORY REGIONS ========================")
print "Name Address Size Attrs" print("Name Address Size Attrs")
for ms in merged_segs: for ms in merged_segs:
print "%s 0x%x 0x%x %s" % (ms[0], ms[1], ms[2], ms[3]) print("%s 0x%x 0x%x %s" % (ms[0], ms[1], ms[2], ms[3]))
for cs in core_segs: for cs in core_segs:
# core dump exec segments are from ROM, other are belong to tasks (TCB or stack) # core dump exec segments are from ROM, other are belong to tasks (TCB or stack)
if cs.flags & ESPCoreDumpSegment.PF_X: if cs.flags & ESPCoreDumpSegment.PF_X:
seg_name = 'rom.text' seg_name = 'rom.text'
else: else:
seg_name = 'tasks.data' seg_name = 'tasks.data'
print ".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str()) print(".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str()))
if args.print_mem: if args.print_mem:
print "\n====================== CORE DUMP MEMORY CONTENTS ========================" print("\n====================== CORE DUMP MEMORY CONTENTS ========================")
for cs in core_elf.program_segments: for cs in core_elf.program_segments:
# core dump exec segments are from ROM, other are belong to tasks (TCB or stack) # core dump exec segments are from ROM, other are belong to tasks (TCB or stack)
if cs.flags & ESPCoreDumpSegment.PF_X: if cs.flags & ESPCoreDumpSegment.PF_X:
seg_name = 'rom.text' seg_name = 'rom.text'
else: else:
seg_name = 'tasks.data' seg_name = 'tasks.data'
print ".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str()) print(".coredump.%s 0x%x 0x%x %s" % (seg_name, cs.addr, len(cs.data), cs.attr_str()))
p = gdbmi_getinfo(p, handlers, "x/%dx 0x%x" % (len(cs.data)/4, cs.addr)) p = gdbmi_getinfo(p, handlers, "x/%dx 0x%x" % (old_div(len(cs.data),4), cs.addr))
print "\n===================== ESP32 CORE DUMP END =====================" print("\n===================== ESP32 CORE DUMP END =====================")
print "===============================================================" print("===============================================================")
p.stdin.write('q\n') p.stdin.write(b'q\n')
p.wait() p.wait()
p.stdin.close() p.stdin.close()
p.stdout.close() p.stdout.close()
@ -1073,7 +1086,7 @@ def info_corefile(args):
if not args.core and not args.save_core: if not args.core and not args.save_core:
loader.remove_tmp_file(core_fname) loader.remove_tmp_file(core_fname)
loader.cleanup() loader.cleanup()
print 'Done!' print('Done!')
def main(): def main():
@ -1123,12 +1136,12 @@ def main():
parser_info_coredump.add_argument('prog', help='Path to program\'s ELF binary', type=str) parser_info_coredump.add_argument('prog', help='Path to program\'s ELF binary', type=str)
# internal sanity check - every operation matches a module function of the same name # internal sanity check - every operation matches a module function of the same name
for operation in subparsers.choices.keys(): for operation in subparsers.choices:
assert operation in globals(), "%s should be a module function" % operation assert operation in globals(), "%s should be a module function" % operation
args = parser.parse_args() args = parser.parse_args()
print 'espcoredump.py v%s' % __version__ print('espcoredump.py v%s' % __version__)
operation_func = globals()[args.operation] operation_func = globals()[args.operation]
operation_func(args) operation_func(args)
@ -1138,5 +1151,5 @@ if __name__ == '__main__':
try: try:
main() main()
except ESPCoreDumpError as e: except ESPCoreDumpError as e:
print '\nA fatal error occurred: %s' % e print('\nA fatal error occurred: %s' % e)
sys.exit(2) sys.exit(2)

View file

@ -0,0 +1,158 @@
lBoAAAkAAABkAQAA
BD77PwB7+z/QfPs/
cHv7P3B8+z9tAAAAPC37Pzwt+z8EPvs/NC37PxIAAAClpaWlpaWlpQQ++z8AAAAA
BwAAANR0+z91bmFsaWduZWRfcHRyX3QAAQAAANB8+z8AAAAAIAgGAAcAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
aDtAP20hDUAwBAYASCENgMB7+z8CAAAANjxAPwB8+z/06Po/AAAAAAAAAAAFAAAA
rf///yAAAABsPvs/AQAAAIAAAAABAAAAAAAAAAAAAAAdAAAABQAAAP0UAEANFQBA
/////wEAAACAAAAAfCEIQIwP+z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAEAAACAAAAAAQAAAAAAAABIIQ2A8Hv7PwEAAAD06Po/
pycNgPB7+z8KAAAA9Oj6PwB8+z/06Po/AAAAAAAAAACQIQ2AIHz7PwoAAAABAAAA
kztAPx4AAAA1PEA/AQAAACMABgABAAAAIQAGAKA6+z8AAAAAUHz7PwAAAAAAAAAA
AwAAAFB8+z8AAAAAAAAAAGwQ+z8EPvs/AAAAAAAAAAAAAAAAcHz7PwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHx8+z8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
/Fb7P5BV+z/0Vvs/
kFX7P5BW+z/ZclwZcFz7P7As+z/8Vvs/qCz7PxkAAADVIwJJEo189/xW+z8AAAAA
AAAAAPhS+z9JRExFMAAweiWIEpHwtvYAAAAAAPRW+z8AAAAAIAIGAAAAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAA8448=
2CEIQIZKDkAwAgYAuFcIgFBW+z8IAAAAAAAAAAEAAABoXPs/AAAAAAEAAACsK/s/
kCv7PwAAAAABAAAAAAAAAAEAAAAhAAYAIwgGAAAAAADcSwiAEFb7PwAAAAAAAAAA
AAAAANEjCEABAAAA6GQIQAHp+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIQAGACMIBgAAAAAAcFb7PwAAAAAAAAAA
AQAAAGhc+z8AAAAAAQAAAAAAAACQVvs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnFb7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
aFz7PwBb+z9gXPs/
AFv7PwBc+z9TsePnsCz7PwRX+z9oXPs/qCz7PxkAAACoWji9Rc4eO2hc+z8AAAAA
AAAAAGRY+z9JRExFMQBwjmCRXQvnOuwAAQAAAGBc+z8AAAAAIA4GAAAAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACbsV8=
2CEIQIZKDkAwDgYAuFcIgMBb+z8IAAAAAQAAAAAAAAD8Vvs/AAAAAAEAAADMK/s/
kCv7PwAAAAABAACAAAAAAAEAAAAhAAYAAAAAAAAAAAAgAAYAAQAAAAAAAAAAAAAA
AAAAANEjCEABAAAA6GQIQBzv+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAIQAGAAAAAAAAAAAA4Fv7PwAAAAAAAAAA
AAAAAPxW+z8AAAAAAQAAAAAAAAAAXPs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADFz7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAA==
nDz7P2Bz+z/MdPs/
YHP7P2B0+z/RAAAAnCz7P3Q/+z+cPPs/lCz7PxQAAAAkbPs/JGz7P5w8+z8AAAAA
BQAAANBs+z9iYWRfcHRyX3Rhc2sApaUA////f8x0+z8AAAAAIQAGAAUAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAClpaU=
2CEIQJ5VCEAwAgYAEyENgCB0+z/RAAAAAAAAAGwQ+z+cPPs/AAAAAAAAAACeVQiA
AHT7PwAAAADRAAAAIwAGAAEAAAAhAAYAcFv7PwAAAACkJw2A4HP7P/0UAEANFQBA
+f///9EjCEABAAAA6GQIQHwH+z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAACMABgABAAAAIQAGAHBb+z8AAAAAQHT7PwAAAAAAAAAA
bBD7P5w8+z8AAAAAAAAAAAAAAABgdPs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbHT7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
bD/7P3CD+z/UhPs/
cIP7P3CE+z/RAAAApDz7P5ws+z9sP/s/lCz7Pw8AAAC4PPs/JGz7P2w/+z8AAAAA
CgAAANh8+z9mYWlsZWRfYXNzZXJ0X3QAAAAAANSE+z8AAAAAIQAGAAoAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
2CEIQJ5VCEAwAgYAoyANgDCE+z/RAAAAAAAAAGwQ+z9sP/s/AAAAAAAAAACeVQiA
EIT7PwAAAADRAAAAIwAGAAEAAAAhAAYAAAAAAAAAAACkJw2A8IP7P/0UAEANFQBA
+P///9EjCEABAAAA6GQIQIwX+z8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAACMABgABAAAAIQAGAAAAAAAAAAAAUIT7PwAAAAAAAAAA
bBD7P2w/+z8AAAAAAAAAAAAAAABwhPs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfIT7PwAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAA=
yGb7P0Bl+z/AZvs/
QGX7P2Bm+z8AAAAAiCz7P4gs+z/IZvs/gCz7PxgAAAD8Xfs//F37P8hm+z/0Xfs/
AQAAAMRe+z9UbXIgU3ZjAFUPn9OBr6IAAAAAAMBm+z8AAAAAIQAGAAEAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAADm+Zc=
2CEIQJxiCEAwCAYAj2MIgABm+z+oLvs/AAAAAAEAAAAMUfs/AAAAAAEAAACcYgiA
4GX7PwAAAAAALPs/GF77PwAAAAAAAAAAAAAAAAAAAAClpaWlpaWlpQAAAAAAAAAA
AAAAANEjCEAAAAAA6GQIQHz5+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMGb7PwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAHz5+j8AAAAAAAAAAAAAAAAAAAAAYGb7PwAAAAAAAAAA
AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAABsZvs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
iPr6PwD5+j+A+vo/
APn6PyD6+j/akPlfPDv7P6D9+j+I+vo/JCz7PwMAAABc6vo/XOr6P4j6+j9U6vo/
FgAAAITq+j9lc3BfdGltZXIAH+HpXvQAAAAAAID6+j8AAAAAIQAGABYAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAACISzU=
2CEIQK1GCEAwAAYA+xQNgMD5+j8w6vo/AAAAAHjq+j8AAAAAAQAAAAEAAACtRgiA
oPn6PwAAAACcLvs/nC77PwEAAAAhAAYAAAAAAAAAAAClpaWlpaWlpQAAAAAAAAAA
AAAAANEjCEABAAAA6GQIQDyN+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPr6PwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAACD6+j8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAs+vo/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
NDv7P4A5+z8sO/s/
gDn7P8A6+z/APAiILCz7P5D6+j80O/s/JCz7PwEAAAAs//o/LP/6PzQ7+z8k//o/
GAAAADA3+z9pcGMxAMP571b2wMSsI4QAAQAAACw7+z8AAAAAIQAGABgAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAADZjgQ=
2CEIQEoRCEAwAAYArUYIgEA6+z8BAAAAnC77P6Au+z+QfP4/AAAAACMHBgBKEQiA
IDr7P+AA8D8BAAAALBD7PwEAAAAgAAYAIwAGAAAAAABAOvs/AQAAAAAAAAAAAAAA
AAAAANEjCEABAAAA6GQIQNzN+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAP//P7MAAAAAAAAAAAAAAACzEQiAYDr7PwD/+j8AAAAA
AQAAAAEAAAAgAAYAIwAGAAAAAACgOvs/AQAAAPgvCEAAAAAACQAAAAAAAAAjBwYA
/////6A6+z8BAAAA+C8IQEj/+j8AAAAAAQAAAAAAAAAAAAAAwDr7PwAAAAAAAAAA
AQAAAAAAAAAAAAAAAAAAACwPCICAff4/KAAAACgAAAAAAAAAAAAAAMw6+z8AAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=
mP36P6A1+z8oN/s/
oDX7P8A2+z9UgfpzkPr6Pyws+z+Y/fo/JCz7PwEAAABw/fo/cP36P5j9+j9o/fo/
GAAAACwz+z9pcGMwAIY9HgrUf/61qBQAAAAAACg3+z8AAAAAIQAGABgAAAAAAAAA
AAAAAAAAAAAAAAAAjOj6P/To+j9c6fo/AAAAAAAAAAABAAAAAAAAAHg8QD8AAAAA
SB0AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAADEsn4=
2CEIQK1GCEAwAAYAsxEIgGA2+z9E/fo/AAAAAIz9+j8AAAAAAQAAAAEAAACtRgiA
QDb7PwAAAACcLvs/nC77P/A6/j8AAAAAAgAAAAAAAAClpaWlpaWlpQAAAAAAAAAA
AAAAANEjCEDwOv4/6GQIQNzJ+j8AAAAAAAAAAAAAAAD//z+zAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoDb7PwAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAMA2+z8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACqDgiAoDv+Pwws+z/kLvs/
AAAAAAAAAADMNvs/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAA=

View file

@ -0,0 +1,540 @@
espcoredump.py v0.2-dev
===============================================================
==================== ESP32 CORE DUMP START ====================
================== CURRENT THREAD REGISTERS ===================
pc 0x400d216d 0x400d216d <recur_func+77>
lbeg 0x400014fd 1073747197
lend 0x4000150d 1073747213
lcount 0xffffffff 4294967295
sar 0x0 0
ps 0x60420 394272
threadptr <unavailable>
br <unavailable>
scompare1 <unavailable>
acclo <unavailable>
acchi <unavailable>
m0 <unavailable>
m1 <unavailable>
m2 <unavailable>
m3 <unavailable>
expstate <unavailable>
f64r_lo <unavailable>
f64r_hi <unavailable>
f64s <unavailable>
fcr <unavailable>
fsr <unavailable>
a0 0x400d2148 1074602312
a1 0x3ffb7bc0 1073445824
a2 0x2 2
a3 0x3f403c36 1061174326
a4 0x3ffb7c00 1073445888
a5 0x3ffae8f4 1073408244
a6 0x0 0
a7 0x0 0
a8 0x5 5
a9 0xffffffad -83
a10 0x20 32
a11 0x3ffb3e6c 1073430124
a12 0x1 1
a13 0x80 128
a14 0x1 1
a15 0x0 0
==================== CURRENT THREAD STACK =====================
#0 0x400d216d in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:70
#1 0x400d2148 in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:63
#2 0x400d2148 in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:63
#3 0x400d2190 in unaligned_ptr_task (pvParameter=0x0) at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:80
======================== THREADS INFO =========================
Id Target Id Frame
9 process 8 0x400846ad in xQueueGenericReceive (xQueue=0x3ffafd44, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at /home/dragon/esp/esp-idf/components/freertos/queue.c:1591
8 process 7 0x4008114a in esp_crosscore_int_send_yield (core_id=1) at /home/dragon/esp/esp-idf/components/esp32/crosscore_int.c:112
7 process 6 0x400846ad in xQueueGenericReceive (xQueue=0x3ffaea30, pvBuffer=0x0, xTicksToWait=4294967295, xJustPeeking=0) at /home/dragon/esp/esp-idf/components/freertos/queue.c:1591
6 process 5 0x4008629c in prvProcessTimerOrBlockTask (xNextExpireTime=<optimized out>, xListWasEmpty=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/timers.c:588
5 process 4 0x4008559e in vTaskDelay (xTicksToDelay=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491
4 process 3 0x4008559e in vTaskDelay (xTicksToDelay=<optimized out>) at /home/dragon/esp/esp-idf/components/freertos/tasks.c:1491
3 process 2 0x400e4a86 in esp_vApplicationWaitiHook () at /home/dragon/esp/esp-idf/components/esp32/freertos_hooks.c:66
2 process 1 0x400e4a86 in esp_vApplicationWaitiHook () at /home/dragon/esp/esp-idf/components/esp32/freertos_hooks.c:66
* 1 <main task> 0x400d216d in recur_func () at /home/dragon/esp/esp-idf/examples/get-started/hello_world/main/hello_world_main.c:70
======================= ALL MEMORY REGIONS ========================
Name Address Size Attrs
.rtc.text 0x400c0000 0x0 RW
.rtc_noinit 0x50000000 0x0 RW
.iram0.vectors 0x40080000 0x400 R XA
.iram0.text 0x40080400 0x93f8 RWXA
.dram0.data 0x3ffb0000 0x2288 RW A
.noinit 0x3ffb2288 0x0 RW
.flash.rodata 0x3f400020 0x6cd4 RW A
.flash.text 0x400d0018 0x14cb4 R XA
.coredump.tasks.data 0x3ffb3e04 0x164 RW
.coredump.tasks.data 0x3ffb7b00 0x1d0 RW
.coredump.tasks.data 0x3ffb56fc 0x164 RW
.coredump.tasks.data 0x3ffb5590 0x164 RW
.coredump.tasks.data 0x3ffb5c68 0x164 RW
.coredump.tasks.data 0x3ffb5b00 0x160 RW
.coredump.tasks.data 0x3ffb3c9c 0x164 RW
.coredump.tasks.data 0x3ffb7360 0x16c RW
.coredump.tasks.data 0x3ffb3f6c 0x164 RW
.coredump.tasks.data 0x3ffb8370 0x164 RW
.coredump.tasks.data 0x3ffb66c8 0x164 RW
.coredump.tasks.data 0x3ffb6540 0x180 RW
.coredump.tasks.data 0x3ffafa88 0x164 RW
.coredump.tasks.data 0x3ffaf900 0x180 RW
.coredump.tasks.data 0x3ffb3b34 0x164 RW
.coredump.tasks.data 0x3ffb3980 0x1ac RW
.coredump.tasks.data 0x3ffafd98 0x164 RW
.coredump.tasks.data 0x3ffb35a0 0x188 RW
====================== CORE DUMP MEMORY CONTENTS ========================
.coredump.tasks.data 0x3ffb3e04 0x164 RW
0x3ffb3e04: 0x3ffb7b70 0x3ffb7c70 0x0000006d 0x3ffb2d3c
0x3ffb3e14: 0x3ffb2d3c 0x3ffb3e04 0x3ffb2d34 0x00000012
0x3ffb3e24: 0xa5a5a5a5 0xa5a5a5a5 0x3ffb3e04 0x00000000
0x3ffb3e34: 0x00000007 0x3ffb74d4 0x6c616e75 0x656e6769
0x3ffb3e44: 0x74705f64 0x00745f72 0x00000001 0x3ffb7cd0
0x3ffb3e54: 0x00000000 0x00060820 0x00000007 0x00000000
0x3ffb3e64: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3e74: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3e84: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3e94: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb3ea4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3eb4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ec4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ed4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ee4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ef4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f04: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f14: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f24: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f34: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f44: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f54: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3f64: 0x00000000
.coredump.tasks.data 0x3ffb7b00 0x1d0 RW
0x3ffb7b00: 0x3f403b68 0x400d216d 0x00060430 0x800d2148
0x3ffb7b10: 0x3ffb7bc0 0x00000002 0x3f403c36 0x3ffb7c00
0x3ffb7b20: 0x3ffae8f4 0x00000000 0x00000000 0x00000005
0x3ffb7b30: 0xffffffad 0x00000020 0x3ffb3e6c 0x00000001
0x3ffb7b40: 0x00000080 0x00000001 0x00000000 0x00000000
0x3ffb7b50: 0x0000001d 0x00000005 0x400014fd 0x4000150d
0x3ffb7b60: 0xffffffff 0x00000001 0x00000080 0x4008217c
0x3ffb7b70: 0x3ffb0f8c 0x00000000 0x00000000 0x00000000
0x3ffb7b80: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb7b90: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7ba0: 0x00000001 0x00000080 0x00000001 0x00000000
0x3ffb7bb0: 0x800d2148 0x3ffb7bf0 0x00000001 0x3ffae8f4
0x3ffb7bc0: 0x800d27a7 0x3ffb7bf0 0x0000000a 0x3ffae8f4
0x3ffb7bd0: 0x3ffb7c00 0x3ffae8f4 0x00000000 0x00000000
0x3ffb7be0: 0x800d2190 0x3ffb7c20 0x0000000a 0x00000001
0x3ffb7bf0: 0x3f403b93 0x0000001e 0x3f403c35 0x00000001
0x3ffb7c00: 0x00060023 0x00000001 0x00060021 0x3ffb3aa0
0x3ffb7c10: 0x00000000 0x3ffb7c50 0x00000000 0x00000000
0x3ffb7c20: 0x00000003 0x3ffb7c50 0x00000000 0x00000000
0x3ffb7c30: 0x3ffb106c 0x3ffb3e04 0x00000000 0x00000000
0x3ffb7c40: 0x00000000 0x3ffb7c70 0x00000000 0x00000000
0x3ffb7c50: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7c60: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7c70: 0x00000000 0x00000000 0x3ffb7c7c 0x00000000
0x3ffb7c80: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7c90: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7ca0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7cb0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7cc0: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb56fc 0x164 RW
0x3ffb56fc: 0x3ffb5590 0x3ffb5690 0x195c72d9 0x3ffb5c70
0x3ffb570c: 0x3ffb2cb0 0x3ffb56fc 0x3ffb2ca8 0x00000019
0x3ffb571c: 0x490223d5 0xf77c8d12 0x3ffb56fc 0x00000000
0x3ffb572c: 0x00000000 0x3ffb52f8 0x454c4449 0x7a300030
0x3ffb573c: 0x91128825 0x00f6b6f0 0x00000000 0x3ffb56f4
0x3ffb574c: 0x00000000 0x00060220 0x00000000 0x00000000
0x3ffb575c: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb576c: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb577c: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb578c: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb579c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57ac: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57bc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57cc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57dc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57ec: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb57fc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb580c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb581c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb582c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb583c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb584c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb585c: 0x8fe33c00
.coredump.tasks.data 0x3ffb5590 0x164 RW
0x3ffb5590: 0x400821d8 0x400e4a86 0x00060230 0x800857b8
0x3ffb55a0: 0x3ffb5650 0x00000008 0x00000000 0x00000001
0x3ffb55b0: 0x3ffb5c68 0x00000000 0x00000001 0x3ffb2bac
0x3ffb55c0: 0x3ffb2b90 0x00000000 0x00000001 0x00000000
0x3ffb55d0: 0x00000001 0x00060021 0x00060823 0x00000000
0x3ffb55e0: 0x80084bdc 0x3ffb5610 0x00000000 0x00000000
0x3ffb55f0: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffb5600: 0x3ffae901 0x00000000 0x00000000 0x00000000
0x3ffb5610: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb5620: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5630: 0x00000000 0x00000001 0x00060021 0x00060823
0x3ffb5640: 0x00000000 0x3ffb5670 0x00000000 0x00000000
0x3ffb5650: 0x00000001 0x3ffb5c68 0x00000000 0x00000001
0x3ffb5660: 0x00000000 0x3ffb5690 0x00000000 0x00000000
0x3ffb5670: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5680: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5690: 0x00000000 0x00000000 0x3ffb569c 0x00000000
0x3ffb56a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56b0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56c0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56d0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb56f0: 0x00000000
.coredump.tasks.data 0x3ffb5c68 0x164 RW
0x3ffb5c68: 0x3ffb5b00 0x3ffb5c00 0xe7e3b153 0x3ffb2cb0
0x3ffb5c78: 0x3ffb5704 0x3ffb5c68 0x3ffb2ca8 0x00000019
0x3ffb5c88: 0xbd385aa8 0x3b1ece45 0x3ffb5c68 0x00000000
0x3ffb5c98: 0x00000000 0x3ffb5864 0x454c4449 0x8e700031
0x3ffb5ca8: 0x0b5d9160 0x00ec3ae7 0x00000001 0x3ffb5c60
0x3ffb5cb8: 0x00000000 0x00060e20 0x00000000 0x00000000
0x3ffb5cc8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb5cd8: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb5ce8: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb5cf8: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb5d08: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d18: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d28: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d38: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d48: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d58: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d68: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d78: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d88: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5d98: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5da8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5db8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5dc8: 0x5fb19b00
.coredump.tasks.data 0x3ffb5b00 0x160 RW
0x3ffb5b00: 0x400821d8 0x400e4a86 0x00060e30 0x800857b8
0x3ffb5b10: 0x3ffb5bc0 0x00000008 0x00000001 0x00000000
0x3ffb5b20: 0x3ffb56fc 0x00000000 0x00000001 0x3ffb2bcc
0x3ffb5b30: 0x3ffb2b90 0x00000000 0x80000001 0x00000000
0x3ffb5b40: 0x00000001 0x00060021 0x00000000 0x00000000
0x3ffb5b50: 0x00060020 0x00000001 0x00000000 0x00000000
0x3ffb5b60: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffb5b70: 0x3ffaef1c 0x00000000 0x00000000 0x00000000
0x3ffb5b80: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb5b90: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5ba0: 0x00000000 0x00000001 0x00060021 0x00000000
0x3ffb5bb0: 0x00000000 0x3ffb5be0 0x00000000 0x00000000
0x3ffb5bc0: 0x00000000 0x3ffb56fc 0x00000000 0x00000001
0x3ffb5bd0: 0x00000000 0x3ffb5c00 0x00000000 0x00000000
0x3ffb5be0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5bf0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c00: 0x00000000 0x00000000 0x3ffb5c0c 0x00000000
0x3ffb5c10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c20: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c30: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c40: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb5c50: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb3c9c 0x164 RW
0x3ffb3c9c: 0x3ffb7360 0x3ffb7460 0x000000d1 0x3ffb2c9c
0x3ffb3cac: 0x3ffb3f74 0x3ffb3c9c 0x3ffb2c94 0x00000014
0x3ffb3cbc: 0x3ffb6c24 0x3ffb6c24 0x3ffb3c9c 0x00000000
0x3ffb3ccc: 0x00000005 0x3ffb6cd0 0x5f646162 0x5f727470
0x3ffb3cdc: 0x6b736174 0x00a5a500 0x7fffffff 0x3ffb74cc
0x3ffb3cec: 0x00000000 0x00060021 0x00000005 0x00000000
0x3ffb3cfc: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3d0c: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3d1c: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3d2c: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb3d3c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d4c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d5c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d6c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d7c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d8c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3d9c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dac: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dbc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dcc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ddc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dec: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3dfc: 0xa5a5a500
.coredump.tasks.data 0x3ffb7360 0x16c RW
0x3ffb7360: 0x400821d8 0x4008559e 0x00060230 0x800d2113
0x3ffb7370: 0x3ffb7420 0x000000d1 0x00000000 0x3ffb106c
0x3ffb7380: 0x3ffb3c9c 0x00000000 0x00000000 0x8008559e
0x3ffb7390: 0x3ffb7400 0x00000000 0x000000d1 0x00060023
0x3ffb73a0: 0x00000001 0x00060021 0x3ffb5b70 0x00000000
0x3ffb73b0: 0x800d27a4 0x3ffb73e0 0x400014fd 0x4000150d
0x3ffb73c0: 0xfffffff9 0x400823d1 0x00000001 0x400864e8
0x3ffb73d0: 0x3ffb077c 0x00000000 0x00000000 0x00000000
0x3ffb73e0: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb73f0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7400: 0x00060023 0x00000001 0x00060021 0x3ffb5b70
0x3ffb7410: 0x00000000 0x3ffb7440 0x00000000 0x00000000
0x3ffb7420: 0x3ffb106c 0x3ffb3c9c 0x00000000 0x00000000
0x3ffb7430: 0x00000000 0x3ffb7460 0x00000000 0x00000000
0x3ffb7440: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7450: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7460: 0x00000000 0x00000000 0x3ffb746c 0x00000000
0x3ffb7470: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7480: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb7490: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb74a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb74b0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb74c0: 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb3f6c 0x164 RW
0x3ffb3f6c: 0x3ffb8370 0x3ffb8470 0x000000d1 0x3ffb3ca4
0x3ffb3f7c: 0x3ffb2c9c 0x3ffb3f6c 0x3ffb2c94 0x0000000f
0x3ffb3f8c: 0x3ffb3cb8 0x3ffb6c24 0x3ffb3f6c 0x00000000
0x3ffb3f9c: 0x0000000a 0x3ffb7cd8 0x6c696166 0x615f6465
0x3ffb3fac: 0x72657373 0x00745f74 0x00000000 0x3ffb84d4
0x3ffb3fbc: 0x00000000 0x00060021 0x0000000a 0x00000000
0x3ffb3fcc: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3fdc: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3fec: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3ffc: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb400c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb401c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb402c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb403c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb404c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb405c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb406c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb407c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb408c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb409c: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb40ac: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb40bc: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb40cc: 0x00000000
.coredump.tasks.data 0x3ffb8370 0x164 RW
0x3ffb8370: 0x400821d8 0x4008559e 0x00060230 0x800d20a3
0x3ffb8380: 0x3ffb8430 0x000000d1 0x00000000 0x3ffb106c
0x3ffb8390: 0x3ffb3f6c 0x00000000 0x00000000 0x8008559e
0x3ffb83a0: 0x3ffb8410 0x00000000 0x000000d1 0x00060023
0x3ffb83b0: 0x00000001 0x00060021 0x00000000 0x00000000
0x3ffb83c0: 0x800d27a4 0x3ffb83f0 0x400014fd 0x4000150d
0x3ffb83d0: 0xfffffff8 0x400823d1 0x00000001 0x400864e8
0x3ffb83e0: 0x3ffb178c 0x00000000 0x00000000 0x00000000
0x3ffb83f0: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb8400: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8410: 0x00060023 0x00000001 0x00060021 0x00000000
0x3ffb8420: 0x00000000 0x3ffb8450 0x00000000 0x00000000
0x3ffb8430: 0x3ffb106c 0x3ffb3f6c 0x00000000 0x00000000
0x3ffb8440: 0x00000000 0x3ffb8470 0x00000000 0x00000000
0x3ffb8450: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8460: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8470: 0x00000000 0x00000000 0x3ffb847c 0x00000000
0x3ffb8480: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb8490: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84b0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84c0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb84d0: 0x00000000
.coredump.tasks.data 0x3ffb66c8 0x164 RW
0x3ffb66c8: 0x3ffb6540 0x3ffb6660 0x00000000 0x3ffb2c88
0x3ffb66d8: 0x3ffb2c88 0x3ffb66c8 0x3ffb2c80 0x00000018
0x3ffb66e8: 0x3ffb5dfc 0x3ffb5dfc 0x3ffb66c8 0x3ffb5df4
0x3ffb66f8: 0x00000001 0x3ffb5ec4 0x20726d54 0x00637653
0x3ffb6708: 0xd39f0f55 0x00a2af81 0x00000000 0x3ffb66c0
0x3ffb6718: 0x00000000 0x00060021 0x00000001 0x00000000
0x3ffb6728: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb6738: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb6748: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb6758: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb6768: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6778: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6788: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6798: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67a8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67b8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67c8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67d8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67e8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb67f8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6808: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6818: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6828: 0x97f9e600
.coredump.tasks.data 0x3ffb6540 0x180 RW
0x3ffb6540: 0x400821d8 0x4008629c 0x00060830 0x8008638f
0x3ffb6550: 0x3ffb6600 0x3ffb2ea8 0x00000000 0x00000001
0x3ffb6560: 0x3ffb510c 0x00000000 0x00000001 0x8008629c
0x3ffb6570: 0x3ffb65e0 0x00000000 0x3ffb2c00 0x3ffb5e18
0x3ffb6580: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6590: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
0x3ffb65a0: 0x00000000 0x400823d1 0x00000000 0x400864e8
0x3ffb65b0: 0x3ffaf97c 0x00000000 0x00000000 0x00000000
0x3ffb65c0: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb65d0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb65e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb65f0: 0x00000000 0x3ffb6630 0x00000000 0x00000000
0x3ffb6600: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6610: 0x3ffaf97c 0x00000000 0x00000000 0x00000000
0x3ffb6620: 0x00000000 0x3ffb6660 0x00000000 0x00000000
0x3ffb6630: 0x00000001 0x00000000 0x00000000 0x00000000
0x3ffb6640: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6650: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6660: 0x00000000 0x00000000 0x3ffb666c 0x00000000
0x3ffb6670: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6680: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb6690: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb66a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb66b0: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffafa88 0x164 RW
0x3ffafa88: 0x3ffaf900 0x3ffafa20 0x5ff990da 0x3ffb3b3c
0x3ffafa98: 0x3ffafda0 0x3ffafa88 0x3ffb2c24 0x00000003
0x3ffafaa8: 0x3ffaea5c 0x3ffaea5c 0x3ffafa88 0x3ffaea54
0x3ffafab8: 0x00000016 0x3ffaea84 0x5f707365 0x656d6974
0x3ffafac8: 0xe11f0072 0x00f45ee9 0x00000000 0x3ffafa80
0x3ffafad8: 0x00000000 0x00060021 0x00000016 0x00000000
0x3ffafae8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffafaf8: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffafb08: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffafb18: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffafb28: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb38: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb48: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb58: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb68: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb78: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb88: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafb98: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafba8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbb8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbc8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbd8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafbe8: 0x354b8800
.coredump.tasks.data 0x3ffaf900 0x180 RW
0x3ffaf900: 0x400821d8 0x400846ad 0x00060030 0x800d14fb
0x3ffaf910: 0x3ffaf9c0 0x3ffaea30 0x00000000 0x3ffaea78
0x3ffaf920: 0x00000000 0x00000001 0x00000001 0x800846ad
0x3ffaf930: 0x3ffaf9a0 0x00000000 0x3ffb2e9c 0x3ffb2e9c
0x3ffaf940: 0x00000001 0x00060021 0x00000000 0x00000000
0x3ffaf950: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
0x3ffaf960: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffaf970: 0x3ffa8d3c 0x00000000 0x00000000 0x00000000
0x3ffaf980: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffaf990: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9b0: 0x00000000 0x3ffafa00 0x00000000 0x00000000
0x3ffaf9c0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9d0: 0xffffffff 0x00000000 0x00000000 0x00000000
0x3ffaf9e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffaf9f0: 0x00000000 0x3ffafa20 0x00000000 0x00000000
0x3ffafa00: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa20: 0x00000000 0x00000000 0x3ffafa2c 0x00000000
0x3ffafa30: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa40: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa50: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa60: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafa70: 0x00000000 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffb3b34 0x164 RW
0x3ffb3b34: 0x3ffb3980 0x3ffb3ac0 0x88083cc0 0x3ffb2c2c
0x3ffb3b44: 0x3ffafa90 0x3ffb3b34 0x3ffb2c24 0x00000001
0x3ffb3b54: 0x3ffaff2c 0x3ffaff2c 0x3ffb3b34 0x3ffaff24
0x3ffb3b64: 0x00000018 0x3ffb3730 0x31637069 0xeff9c300
0x3ffb3b74: 0xc4c0f656 0x008423ac 0x00000001 0x3ffb3b2c
0x3ffb3b84: 0x00000000 0x00060021 0x00000018 0x00000000
0x3ffb3b94: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffb3ba4: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffb3bb4: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffb3bc4: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffb3bd4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3be4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3bf4: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c04: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c14: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c24: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c34: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c44: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c54: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c64: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c74: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c84: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3c94: 0x048ed900
.coredump.tasks.data 0x3ffb3980 0x1ac RW
0x3ffb3980: 0x400821d8 0x4008114a 0x00060030 0x800846ad
0x3ffb3990: 0x3ffb3a40 0x00000001 0x3ffb2e9c 0x3ffb2ea0
0x3ffb39a0: 0x3ffe7c90 0x00000000 0x00060723 0x8008114a
0x3ffb39b0: 0x3ffb3a20 0x3ff000e0 0x00000001 0x3ffb102c
0x3ffb39c0: 0x00000001 0x00060020 0x00060023 0x00000000
0x3ffb39d0: 0x3ffb3a40 0x00000001 0x00000000 0x00000000
0x3ffb39e0: 0x00000000 0x400823d1 0x00000001 0x400864e8
0x3ffb39f0: 0x3ffacddc 0x00000000 0x00000000 0x00000000
0x3ffb3a00: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb3a10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3a20: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb3a30: 0x800811b3 0x3ffb3a60 0x3ffaff00 0x00000000
0x3ffb3a40: 0x00000001 0x00000001 0x00060020 0x00060023
0x3ffb3a50: 0x00000000 0x3ffb3aa0 0x00000001 0x40082ff8
0x3ffb3a60: 0x00000000 0x00000009 0x00000000 0x00060723
0x3ffb3a70: 0xffffffff 0x3ffb3aa0 0x00000001 0x40082ff8
0x3ffb3a80: 0x3ffaff48 0x00000000 0x00000001 0x00000000
0x3ffb3a90: 0x00000000 0x3ffb3ac0 0x00000000 0x00000000
0x3ffb3aa0: 0x00000001 0x00000000 0x00000000 0x00000000
0x3ffb3ab0: 0x80080f2c 0x3ffe7d80 0x00000028 0x00000028
0x3ffb3ac0: 0x00000000 0x00000000 0x3ffb3acc 0x00000000
0x3ffb3ad0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3ae0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3af0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3b00: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3b10: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3b20: 0x00000000 0x00000000 0x00000000
.coredump.tasks.data 0x3ffafd98 0x164 RW
0x3ffafd98: 0x3ffb35a0 0x3ffb36c0 0x73fa8154 0x3ffafa90
0x3ffafda8: 0x3ffb2c2c 0x3ffafd98 0x3ffb2c24 0x00000001
0x3ffafdb8: 0x3ffafd70 0x3ffafd70 0x3ffafd98 0x3ffafd68
0x3ffafdc8: 0x00000018 0x3ffb332c 0x30637069 0x1e3d8600
0x3ffafdd8: 0xfe7fd40a 0x0014a8b5 0x00000000 0x3ffb3728
0x3ffafde8: 0x00000000 0x00060021 0x00000018 0x00000000
0x3ffafdf8: 0x00000000 0x00000000 0x00000000 0x3ffae88c
0x3ffafe08: 0x3ffae8f4 0x3ffae95c 0x00000000 0x00000000
0x3ffafe18: 0x00000001 0x00000000 0x3f403c78 0x00000000
0x3ffafe28: 0x40001d48 0x00000000 0x00000000 0x00000000
0x3ffafe38: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe48: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe58: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe68: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe78: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe88: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafe98: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafea8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafeb8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafec8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafed8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafee8: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffafef8: 0x7eb2c400
.coredump.tasks.data 0x3ffb35a0 0x188 RW
0x3ffb35a0: 0x400821d8 0x400846ad 0x00060030 0x800811b3
0x3ffb35b0: 0x3ffb3660 0x3ffafd44 0x00000000 0x3ffafd8c
0x3ffb35c0: 0x00000000 0x00000001 0x00000001 0x800846ad
0x3ffb35d0: 0x3ffb3640 0x00000000 0x3ffb2e9c 0x3ffb2e9c
0x3ffb35e0: 0x3ffe3af0 0x00000000 0x00000002 0x00000000
0x3ffb35f0: 0xa5a5a5a5 0xa5a5a5a5 0x00000000 0x00000000
0x3ffb3600: 0x00000000 0x400823d1 0x3ffe3af0 0x400864e8
0x3ffb3610: 0x3ffac9dc 0x00000000 0x00000000 0x00000000
0x3ffb3620: 0xb33fffff 0x00000000 0x00000000 0x00000000
0x3ffb3630: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3640: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3650: 0x00000000 0x3ffb36a0 0x00000000 0x00000000
0x3ffb3660: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3670: 0xffffffff 0x00000000 0x00000000 0x00000000
0x3ffb3680: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3690: 0x00000000 0x3ffb36c0 0x00000000 0x00000000
0x3ffb36a0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb36b0: 0x80080eaa 0x3ffe3ba0 0x3ffb2c0c 0x3ffb2ee4
0x3ffb36c0: 0x00000000 0x00000000 0x3ffb36cc 0x00000000
0x3ffb36d0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb36e0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb36f0: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3700: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3710: 0x00000000 0x00000000 0x00000000 0x00000000
0x3ffb3720: 0x00000000 0x00000000
===================== ESP32 CORE DUMP END =====================
===============================================================
Done!

Binary file not shown.

View file

@ -0,0 +1,51 @@
#!/usr/bin/env python
#
# Copyright 2018 Espressif Systems (Shanghai) PTE LTD
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import sys
import os
import unittest
idf_path = os.getenv('IDF_PATH')
if idf_path:
sys.path.insert(0, os.path.join(idf_path, 'components', 'espcoredump'))
import espcoredump
class TestESPCoreDumpFileLoader(unittest.TestCase):
def setUp(self):
self.tmp_file = 'tmp'
self.dloader = espcoredump.ESPCoreDumpFileLoader(path='coredump.b64', b64=True)
self.assertIsInstance(self.dloader, espcoredump.ESPCoreDumpFileLoader)
def tearDown(self):
self.dloader.cleanup()
def testESPCoreDumpFileLoaderWithoutB64(self):
t = espcoredump.ESPCoreDumpFileLoader(path='coredump.b64', b64=False)
self.assertIsInstance(t, espcoredump.ESPCoreDumpFileLoader) # invoke for coverage of open()
t.cleanup()
def test_cannot_remove_dir(self):
self.dloader.remove_tmp_file(fname='.') # silent failure (but covers exception inside)
def test_create_corefile(self):
self.assertEqual(self.dloader.create_corefile(core_fname=self.tmp_file, off=0, rom_elf=None), self.tmp_file)
if __name__ == '__main__':
# The purpose of these tests is to increase the code coverage at places which are sensitive to issues related to
# Python 2&3 compatibility.
# The espcoredump is not suited for through unit testting. There lot of nested functions, interactive
# communication with the developement board and GDB, ...
unittest.main()

View file

@ -0,0 +1,10 @@
#! /bin/bash
{ coverage debug sys \
&& coverage erase \
&& coverage run -a --source=espcoredump ../espcoredump.py info_corefile -m -t b64 -c coredump.b64 test.elf &> output \
&& diff expected_output output \
&& coverage run -a --source=espcoredump ./test_espcoredump.py \
&& coverage report \
; } || { echo 'The test for espcoredump has failed!'; exit 1; }

View file

@ -64,4 +64,5 @@ tools/test_idf_size/test.sh
tools/check_python_dependencies.py tools/check_python_dependencies.py
docs/gen-dxd.py docs/gen-dxd.py
tools/ci/multirun_with_pyenv.sh tools/ci/multirun_with_pyenv.sh
components/espcoredump/test/test_espcoredump.py
components/espcoredump/test/test_espcoredump.sh