Vector35 / Vector35/binaryninja-api

Find Text runs on main thread

Open
#3,059 5 comments 6 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component: UI Effort: Medium Impact: Low UI: Filter
Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Description

Version and Platform (required):

  • Binary Ninja Version: 3.0.3319-dev
  • OS: macOS
  • OS Version: 12.0.1

Bug Description:
When searching for text in the UI, the search runs on the main thread and waits for IL generation on the main thread. This causes the UI to lock up for larger files where IL generation can take many seconds per function.

Steps To Reproduce:
Please provide all steps required to reproduce the behavior:

  1. Open any large binary. I'm using ntdll
  2. Search for text in HLIL, I used "and rsp"
  3. Observe monster lag spikes

Expected Behavior:
I expected the UI to continue being responsive while searching was in progress. The UI isn't modal so I did not expect it to hang the main thread waiting for results.

Additional Information:
MainWindow::findAll looks like it directly calls View::findAllText, which should probably be done instead in a background thread.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with MainWindow::findAll and View::findAllText, then reproduce the lag by searching for "and rsp" in HLIL on a large binary such as ntdll. Trace where IL generation and search work run, and verify that the UI remains responsive while results are produced in the background.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
desktop, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
38/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.