rizinorg / rz-ghidra

Deep ghidra decompiler and sleigh disassembler integration for rizin
GNU Lesser General Public License v3.0
823 stars 88 forks source link

More crashes #154

Closed trufae closed 4 years ago

trufae commented 4 years ago

Describe the issue

a crash trying to disassembler

$ r2 -a r2ghidra -e asm.cpu=V850 -c 'wx 682a;pd' -
zsh: segmentation fault  r2 -a r2ghidra -e asm.cpu=V850 -c 'wx 682a;pd' -
$

How to reproduce?

$ lldb -- r2 -a r2ghidra -e asm.cpu=V850 -c 'wx 682a' -
r
(lldb) target create "r2"
Current executable set to 'r2' (x86_64).
(lldb) settings set -- target.run-args  "-a" "r2ghidra" "-e" "asm.cpu=V850" "-c" "wx 682a" "-"
(lldb) r
Process 16090 launched: '/usr/local/bin/r2' (x86_64)
r_config_get: variable 'asm.cpu' not found

Process 16090 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x14)
    frame #0: 0x000000010ac25bc5 core_ghidra.dylib`DisassemblyCache::getParserContext(Address const&) + 37
core_ghidra.dylib`DisassemblyCache::getParserContext:
->  0x10ac25bc5 <+37>: andl   0x14(%rcx), %eax
    0x10ac25bc8 <+40>: movl   %eax, -0x1c(%rbp)
    0x10ac25bcb <+43>: movq   0x28(%rcx), %rdx
    0x10ac25bcf <+47>: movslq -0x1c(%rbp), %rsi
Target 0: (r2) stopped.
(lldb) up
frame #1: 0x000000010ac26b0b core_ghidra.dylib`Sleigh::obtainContext(Address const&, int) const + 43
core_ghidra.dylib`Sleigh::obtainContext:
->  0x10ac26b0b <+43>: movq   %rax, -0x28(%rbp)
    0x10ac26b0f <+47>: movq   -0x28(%rbp), %rdi
    0x10ac26b13 <+51>: callq  0x10aced78e               ; symbol stub for: ParserContext::getParserState() const
    0x10ac26b18 <+56>: movl   %eax, -0x2c(%rbp)
(lldb) down
frame #0: 0x000000010ac25bc5 core_ghidra.dylib`DisassemblyCache::getParserContext(Address const&) + 37
core_ghidra.dylib`DisassemblyCache::getParserContext:
->  0x10ac25bc5 <+37>: andl   0x14(%rcx), %eax
    0x10ac25bc8 <+40>: movl   %eax, -0x1c(%rbp)
    0x10ac25bcb <+43>: movq   0x28(%rcx), %rdx
    0x10ac25bcf <+47>: movslq -0x1c(%rbp), %rsi
(lldb) bt
error: io_frida.dylib debug map object file '/Users/pancake/prg/r2frida/src/io_frida.o' has changed (actual time is 2020-09-18 03:43:01.000000000, debug map time is 2020-08-27 12:22:12.000000000) since this executable was linked, file will be ignored
error: libfrida-core.a(meson-generated_.._frida-data-helper-process.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_.._frida-data-agent.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_frida.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_debugger.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_host-session-service.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_system.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_darwin_darwin-host-session.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_darwin_fruitjector.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_darwin_frida-helper-process.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_socket_socket-host-session.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_fruity-host-session.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_dtx.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_lockdown.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_installation-proxy.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_lldb.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_injector.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_usbmux.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_keyed-archive.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_plist.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_fruity_plist-service.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_droidy_droidy-host-session.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_droidy_droidy-client.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(frida-glue.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(darwin_darwin-host-session-glue.m.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(darwin_icon-helpers.m.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(darwin_system-darwin.m.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(fruity_fruity-host-session-darwin.m.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_session.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_pipe.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(pipe-darwin.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_darwin_frida-helper-types.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(meson-generated_darwin_port.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(darwin_frida-helper-backend-glue.m.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(darwin_port-glue.m.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(guminspectorserver.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gum.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gumcloak.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gumdarwinmodule.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(guminterceptor.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gumleb.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gumlibc.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gummemory.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gummetalarray.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(gumprintf.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(backend-darwin_gumkernel-darwin.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(backend-darwin_gumtls-darwin.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(backend-darwin_gummemory-darwin.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(backend-darwin_gumprocess-darwin.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
error: libfrida-core.a(backend-x86_gumspinlock-x86.c.o) failed to load objfile for /Users/pancake/prg/r2frida/ext/frida/libfrida-core.a
* thread #1, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x14)
  * frame #0: 0x000000010ac25bc5 core_ghidra.dylib`DisassemblyCache::getParserContext(Address const&) + 37
    frame #1: 0x000000010ac26b0b core_ghidra.dylib`Sleigh::obtainContext(Address const&, int) const + 43
    frame #2: 0x0000000102e108b6 asm_ghidra.dylib`R2Sleigh::getContext(Address const&, int) const + 38
    frame #3: 0x0000000102ece666 anal_ghidra.dylib`SleighAsm::check(unsigned long long, unsigned char const*, int) + 86
    frame #4: 0x0000000102efec7c anal_ghidra.dylib`sleigh_op(r_anal_t*, r_anal_op_t*, unsigned long long, unsigned char const*, int, RAnalOpMask) + 188
    frame #5: 0x000000010146ed3e libr_anal.dylib`r_anal_op(anal=0x0000000104009200, op=0x00007ffeefbfd098, addr=0, data="h*", len=256, mask=R_ANAL_OP_MASK_HINT) at op.c:109:9
    frame #6: 0x000000010146cef4 libr_anal.dylib`r_anal_reflines_get(anal=0x0000000104009200, addr=0, buf="h*", len=256, nlines=63, linesout=1, linescall=0) at reflines.c:162:8
    frame #7: 0x0000000100e9e2fc libr_core.dylib`ds_reflines_init(ds=0x000000010300fa00) at disasm.c:856:20
    frame #8: 0x0000000100e993e1 libr_core.dylib`r_core_print_disasm(p=0x0000000102a04420, core=0x0000000101e1e000, addr=0, buf="h*", len=256, l=64, invbreak=0, cbytes=0, json=false, pj=0x0000000000000000, pdf=0x0000000000000000) at disasm.c:5196:2
    frame #9: 0x0000000100d88f5e libr_core.dylib`cmd_print(data=0x0000000101e1e000, input="d") at cmd_print.c:5451:26
    frame #10: 0x0000000100e7590f libr_core.dylib`r_cmd_call(cmd=0x0000000104043600, input="pd") at cmd_api.c:330:10
    frame #11: 0x0000000100da972a libr_core.dylib`r_core_cmd_subst_i(core=0x0000000101e1e000, cmd="pd", colon=0x0000000000000000, tmpseek=0x00007ffeefbff147) at cmd.c:3813:8
    frame #12: 0x0000000100d630ec libr_core.dylib`r_core_cmd_subst(core=0x0000000101e1e000, cmd="pd") at cmd.c:2731:9
    frame #13: 0x0000000100d624aa libr_core.dylib`run_cmd_depth(core=0x0000000101e1e000, cmd="pd") at cmd.c:6712:9
    frame #14: 0x0000000100d596f3 libr_core.dylib`r_core_cmd(core=0x0000000101e1e000, cstr="pd", log=1) at cmd.c:6788:8
    frame #15: 0x0000000100d47425 libr_core.dylib`r_core_prompt_exec(r=0x0000000101e1e000) at core.c:2995:12
    frame #16: 0x0000000100d47222 libr_core.dylib`r_core_prompt_loop(r=0x0000000101e1e000) at core.c:2846:14
    frame #17: 0x0000000101dc08b6 libr_main.dylib`r_main_radare2(argc=8, argv=0x00007ffeefbff8a0) at radare2.c:1413:4
    frame #18: 0x0000000100003a1d r2`main(argc=8, argv=0x00007ffeefbff8a0) at radare2.c:96:9
    frame #19: 0x00007fff67661cc9 libdyld.dylib`start + 1
(lldb)

Expected behavior

no crash

Possible fix

yes, a fix is possible

Screenshots

plaintext is superior

Additional context

trufae commented 4 years ago

another crash in here:

$ r2 -a r2ghidra -e asm.cpu=asadf:LE:32:default /bin/ls
libc++abi.dylib: terminating with uncaught exception of type LowlevelError
zsh: abort      r2 -a r2ghidra -e asm.cpu=asadf:LE:32:default /bin/ls
$
trufae commented 4 years ago

Screenshot 2020-10-08 at 18 20 36

thestr4ng3r commented 4 years ago

All fixed in #164