Skip to content

Removing instruction lead to ida internal error #9

Description

@yoavst

IDA 9.0

Given the following example:

from __future__ import annotations
from herapi import *

test_pattern = CallInsnPat(HelperPat('objc_release'), ignore_arguments=True)


class ItemRemovalScheme(Scheme):
	def on_matched_item(self, item, ctx: MatchContext) -> ASTPatch|None:
		return ASTPatch.remove_instr(item)


register_storage_scheme("remove_objc_release", ItemRemovalScheme(test_pattern))

Running it on a function with v12 = objc_retain(a6) leads to:

1000494A8: INTERR 50067
Unknown exception
Exception in ida_hexrays.Hexrays_Hooks dispatcher function: SWIG director method error. Error detected when calling 'Hexrays_Hooks.maturity'
Traceback (most recent call last):
  File "/Applications/IDA Professional 9.0.app/Contents/MacOS/python/ida_hexrays.py", line 27990, in maturity
    def maturity(self, *args): return self.callback(hxe_maturity, *args)
                                      ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^
  File "herast.py", line 72, in herast_callback
    raise e
  File "herast.py", line 68, in herast_callback
    matcher.match_cfunc(cfunc)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^
  File "herast/tree/matcher.py", line 58, in match_cfunc
    self.match_ast_tree(ast_tree, ast_ctx, schemes)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "herast/tree/matcher.py", line 77, in match_ast_tree
    if not ast_proc.apply_patch(ast_patch, ast_ctx):
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^
  File "herast/tree/ast_processor.py", line 159, in apply_patch
    relpos = self.get_relative_position(item_path, ast_ctx)
  File "herast/tree/ast_processor.py", line 105, in get_relative_position
    if item == self.get_current():
       ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Applications/IDA Professional 9.0.app/Contents/MacOS/python/ida_hexrays.py", line 20968, in __eq__
    return _ida_hexrays.cinsn_t___eq__(self, r)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^
RuntimeError: Unknown exception

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions