angr / angr-management

The official angr GUI.
BSD 2-Clause "Simplified" License
868 stars 109 forks source link

Uncaught exception when reopening a binary #787

Open zwimer opened 1 year ago

zwimer commented 1 year ago

Description

When I open a binary with the same binary already open, I notice an uncaught exception in the logs. The binary is /bin/true from Fedora 36 Server.

Steps to reproduce the bug

  1. Invoke angr-management
  2. Command-O; select /bin/true copied from a linux distro
  3. Enter, Enter (finish opening the binary)
  4. Command-O; select /bin/true copied from a linux distro
  5. Enter, Enter (finish opening the binary)

Environment

pip install angr-management in a clean virtualenv on Tuesday Nov 8th at 10:00 pm

M1 mac

Additional context

(angr-management-pip) zwimer@Lotus ~/D/W/angr-management> angr-management                                                                                                                                                                     master
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
WARNING | 2022-11-08 23:10:18,549 | cle.loader | The main binary is a position-independent executable. It is being loaded with a base address of 0x400000.
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
WARNING | 2022-11-08 23:10:19,133 | cle.backends.externs | Symbol was allocated without a known size; emulation may fail if it is used non-opaquely: program_invocation_name
WARNING | 2022-11-08 23:10:19,133 | cle.backends.externs | Symbol was allocated without a known size; emulation may fail if it is used non-opaquely: program_invocation_short_name
WARNING | 2022-11-08 23:10:19,133 | cle.loader | The main binary is a position-independent executable. It is being loaded with a base address of 0x400000.
WARNING | 2022-11-08 23:10:19,134 | cle.loader | For more information about "Symbol was allocated without a known size", see https://docs.angr.io/extending-angr/environment#simdata
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
WARNING | 2022-11-08 23:10:19,980 | angrmanagement.data.jobs.flirt_signature_recognition | No FLIRT signatures exist for architecture AMD64.
ERROR   | 2022-11-08 23:10:22,344 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:22,345 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:22,346 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:22,346 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:22,347 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:22,347 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
WARNING | 2022-11-08 23:10:22,588 | angr.analyses.reaching_definitions.function_handler | No handler for external function __libc_start_main(), falling back to generic handler
WARNING | 2022-11-08 23:10:23,007 | angr.analyses.reaching_definitions.function_handler | Please implement the indirect function handler with your own logic.
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
WARNING | 2022-11-08 23:10:25,614 | cle.loader | The main binary is a position-independent executable. It is being loaded with a base address of 0x400000.
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
WARNING | 2022-11-08 23:10:26,085 | cle.backends.externs | Symbol was allocated without a known size; emulation may fail if it is used non-opaquely: program_invocation_name
WARNING | 2022-11-08 23:10:26,085 | cle.backends.externs | Symbol was allocated without a known size; emulation may fail if it is used non-opaquely: program_invocation_short_name
WARNING | 2022-11-08 23:10:26,085 | cle.loader | The main binary is a position-independent executable. It is being loaded with a base address of 0x400000.
WARNING | 2022-11-08 23:10:26,086 | cle.loader | For more information about "Symbol was allocated without a known size", see https://docs.angr.io/extending-angr/environment#simdata
ERROR   | 2022-11-08 23:10:26,097 | angrmanagement.data.object_container | Error raised from event of (container: List of breakpoints)[]
Traceback (most recent call last):
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/data/object_container.py", line 26, in am_event
    listener(**kwargs)
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/views/disassembly_view.py", line 802, in <lambda>
    self.instance.breakpoint_mgr.breakpoints.am_subscribe(lambda **kwargs: self.refresh())
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/views/disassembly_view.py", line 119, in refresh
    self.current_graph.refresh()
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/widgets/qdisasm_graph.py", line 176, in refresh
    b.refresh()
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/widgets/qblock.py", line 105, in refresh
    obj.refresh()
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/widgets/qinstruction.py", line 118, in refresh
    operand.refresh()
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/widgets/qoperand.py", line 144, in refresh
    self._init_widgets()
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/widgets/qoperand.py", line 269, in _init_widgets
    variable, offset = self._pick_variable(variable_and_offsets)
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/ui/widgets/qoperand.py", line 423, in _pick_variable
    arch = self.instance.project.arch
  File "/Users/zwimer/.virtualenvs/angr-management-pip/lib/python3.10/site-packages/angrmanagement/data/object_container.py", line 63, in __getattr__
    return getattr(self._am_obj, item)
AttributeError: 'NoneType' object has no attribute 'arch'
qt.qpa.drawing: Layer-backing is always enabled.  QT_MAC_WANTS_LAYER/_q_mac_wantsLayer has no effect.
WARNING | 2022-11-08 23:10:27,115 | angrmanagement.data.jobs.flirt_signature_recognition | No FLIRT signatures exist for architecture AMD64.
qt.pointer.dispatch: skipping QEventPoint(id=2 ts=0 pos=0,0 scn=1024.53,623.836 gbl=1024.53,623.836 Released ellipse=(1x1 ∡ 0) vel=0,0 press=-1024.53,-623.836 last=-1024.53,-623.836 Δ 1024.53,623.836) : no target window
qt.pointer.dispatch: skipping QEventPoint(id=3 ts=0 pos=0,0 scn=1085.01,675.315 gbl=1085.01,675.315 Released ellipse=(1x1 ∡ 0) vel=0,0 press=-1085.01,-675.315 last=-1085.01,-675.315 Δ 1085.01,675.315) : no target window
qt.pointer.dispatch: skipping QEventPoint(id=1 ts=0 pos=0,0 scn=1032,631.033 gbl=1032,631.033 Released ellipse=(1x1 ∡ 0) vel=0,0 press=-1032,-631.033 last=-1032,-631.033 Δ 1032,631.033) : no target window
ERROR   | 2022-11-08 23:10:29,497 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:29,498 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:29,499 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:29,500 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:29,500 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
ERROR   | 2022-11-08 23:10:29,501 | angr.analyses.variable_recovery.engine_vex.SimEngineVRVEX | Unsupported Binop Iop_InterleaveLO64x2.
WARNING | 2022-11-08 23:10:29,605 | angr.analyses.reaching_definitions.function_handler | No handler for external function __libc_start_main(), falling back to generic handler
WARNING | 2022-11-08 23:10:29,999 | angr.analyses.reaching_definitions.function_handler | Please implement the indirect function handler with your own logic.
^C
ltfish commented 1 year ago

The solution: Support opening a second binary (which automatically closes the first binary if the user permits) and closing the existing project,