Ghidra slow when analysing. #7482
-
I have multiple programs in my project. I work on one when others are being analyzed. Ghidra can get really slow then (little thread stutters?). Is there any workaround? |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments 8 replies
-
You could batch analyze them in headless mode. |
Beta Was this translation helpful? Give feedback.
-
Another option to consider, if you have enough resources on your machine, is to create a second project for importing and analyzing binaries. You can have 2 Ghidras open at the same time, one pointing to the import project and one pointing to your actively working project. When you are done importing and analyzing, you can move the new binaries from the import project to the other project. |
Beta Was this translation helpful? Give feedback.
-
It is well known that ghidra is very slow at analysis. Even when analyzing small programs on a workstation with plenty of resources available it can take a few seconds (as opposed to milliseconds) There are plenty of places I've wanted to point the finger at but I have no proof. One of these places is the database implementation, specifically the lock mechanism, could be a read/write lock such that threads aren't almost always getting blocked when attempting to access the database since everything is always accessing it. But I have no proof. There have been times where I considered this area was intentionally neglected so that the hip and cool analysis progress bar could be seen. Otherwise it would just go away so fast you'd never see it. |
Beta Was this translation helpful? Give feedback.
Ghidra is a highly multithreaded system in general. The analysis thread specifically is a single thread running in the background that will periodically push updates to the GUI.
Each non-trivial widget in the GUI is also multi-threaded. If you happen to have a large number of these widgets open, then the various threads all running when the analysis thread updates the GUI can cause sluggishness. The Symbol Table is an example of a widget that can cause the GUI to slow down with excessive analysis updates. If this happens to you, you can close the Symbol Table and you will not see this issue. This is just an example, but it applies to any of our threaded widgets that update when analysis i…