Skip to content

Conversation

emesare
Copy link
Member

@emesare emesare commented Aug 27, 2025

No description provided.

We do not need to consult the lifted IL if we have already cached the function GUID in the function metadata
…ctions MLIL

It is important that we only retrieve the medium-level IL if the function has
any user-defined variables, otherwise, we will possibly be generating MLIL for no reason.
For the above reason, we do a filter on user-defined variables first.
…ile was given

Fixes the case where we are generating many smaller chunks for a given view and then unintentionally merging
them back together, throwing away all data.
It will just end up freezing the UI for an unreasonable time, just open the generated report in a real web browser or text editor, QTextBrowser falls over and fixing it would be more effort than its worth.
…P files of all the functions

This was caused by the internal flatbuffer verifier reaching the max number of tables, this is fine and the solution is to split the large chunk into smaller ones, effectively creating more flatbuffer "views" of tables.

This is fine from a performance perspective because we already have optimized for many small chunks (e.g. we have a lookup table stored next to each chunk).

I left some comments for future improvements but this should be good now.

Also alongside this change we improved generating performance by 2x on some pathological binaries.
Improves the speed by moving chunks of functions into worker threads, because of how the functions and possible functions are gathered we have many locations to insert fast fails, which is also partially addressed by this commit (see `maximum_possible_functions`).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant