-
Notifications
You must be signed in to change notification settings - Fork 12
Open
Description
Description
I see a long (30-60+ second?) UI lockup when the filter in the Symbol Tree is short, eg a single character or a couple (I test with "m" or "ma"). After this delay, the tree is filtered as expected. With the filter entered, renaming a label will cause the same sort of lag to appear.
I also notice:
- "Unexpected error processing job: GTreeFilterTask" in the main window
- "Expanding nodes..." progress bar stalls
- This only seems to happen when searching the first couple of characters - after this, the filter is responsive.
I initially thought that this was a Ghidra bug, but when I was filling out the bug report I realised that with this extension disabled, the issue went away.
I only see this issue on macOS, it works perfectly on Windows.
To Reproduce
- Open Code Browser with a reasonably large executable. (This can be seen both in an executable that does and doesn't use EE, as long as this plugin is enabled)
- Click on "Filter" box
- Type any single letter or short sequence, eg "m" or "ma"
- Observe that the UI stalls for 30-60 seconds and that the below error appears in the log
- Rename a label
- Observe that the UI again stalls until a timeout is hit
Environment
- OS: macOS Sonoma 14.1.2
- Java Version: openjdk 21.0.1 2023-10-17
- Ghidra Version: 11.0
- Ghidra Origin: installed from brew package manager
- Extensions:
ghidra-emotionengine-reloaded- v2.1.12
Log
2023-12-30 | 19:09:07 | ERROR | (Swing) Timed-out waiting to run a Swing task--potential deadlock!
-- | -- | -- | --
| | | Threads State:
| | | java.lang.Throwable
2023-12-30 | 19:09:07 | ERROR | (AbstractWorker) Unexpected error processing job: GTreeFilterTask java.lang.RuntimeException: Timed-out waiting to run a Swing task--potential deadlock!
| | | at ghidra.util.Swing.runNow(Swing.java:177)
| | | at docking.widgets.tree.GTreeTask.runOnSwingThread(GTreeTask.java:45)
| | | at docking.widgets.tree.tasks.GTreeExpandAllTask.expandPath(GTreeExpandAllTask.java:90)
| | | at docking.widgets.tree.tasks.GTreeExpandAllTask.expandNode(GTreeExpandAllTask.java:80)
| | | at docking.widgets.tree.tasks.GTreeExpandAllTask.expandNode(GTreeExpandAllTask.java:84)
| | | at docking.widgets.tree.tasks.GTreeExpandAllTask.expandNode(GTreeExpandAllTask.java:84)
| | | at docking.widgets.tree.tasks.GTreeExpandAllTask.run(GTreeExpandAllTask.java:45)
| | | at docking.widgets.tree.GTreeFilterTask.expandInSameTask(GTreeFilterTask.java:77)
| | | at docking.widgets.tree.GTreeFilterTask.run(GTreeFilterTask.java:58)
| | | at ghidra.util.worker.AbstractWorker$JobCallback.process(AbstractWorker.java:133)
| | | at ghidra.util.worker.AbstractWorker$JobCallback.process(AbstractWorker.java:123)
| | | at generic.concurrent.ConcurrentQ$CallbackCallable.call(ConcurrentQ.java:658)
| | | at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
| | | at generic.concurrent.FutureTaskMonitor.run(FutureTaskMonitor.java:76)
| | | at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
| | | at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
| | | at java.base/java.lang.Thread.run(Thread.java:1583)
| | | Caused by: ghidra.util.exception.UnableToSwingException: Timed-out waiting for Swing thread lock in 20 SECONDS
| | | at ghidra.util.Swing.waitFor(Swing.java:256)
| | | at ghidra.util.Swing.runNow(Swing.java:235)
| | | at ghidra.util.Swing.runNow(Swing.java:163)
Metadata
Metadata
Assignees
Labels
No labels