Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve error handling of decompilation tasks #391

Merged
merged 17 commits into from
Apr 11, 2024
Merged

Conversation

rihi
Copy link
Collaborator

@rihi rihi commented Feb 28, 2024

This PR improves the error handling of the decompilation process.
Previously, error raised before cfg lifting, like during lifting of the function signature, were simply not caught. This resulted in decompile_all crashing if one function failed before cfg lifting.
We do however already have a mechanism for failed function decompilation, which is that the decompiler taks object created for each function can be marked as 'failed'. This PR makes sure that these kinds of errors are now also caught with this in mind.

Additionally, this PR fixes #291, by checking if binary ninja decompiled the function successfully and failing with the appropriated reason if not.

Additionally this PR has two commits which slightly refactor some code 0759650, 2cd2a36. These are not directly needed to fix any bug, and could be dropped if desired.

@rihi rihi self-assigned this Feb 28, 2024
@rihi rihi force-pushed the improve-error-handling branch 2 times, most recently from ad19bbe to 1f7b5f9 Compare February 28, 2024 14:04
@rihi rihi marked this pull request as draft February 28, 2024 14:23
@rihi rihi force-pushed the improve-error-handling branch from 1f7b5f9 to 4fba3dd Compare February 28, 2024 14:32
@rihi rihi marked this pull request as ready for review February 28, 2024 14:50
ebehner
ebehner previously approved these changes Apr 3, 2024
decompiler/backend/codegenerator.py Outdated Show resolved Hide resolved
__init__.py Outdated Show resolved Hide resolved
decompile.py Outdated Show resolved Hide resolved
decompile.py Outdated Show resolved Hide resolved
decompiler/frontend/binaryninja/frontend.py Outdated Show resolved Hide resolved
decompiler/util/serialization/demo.py Outdated Show resolved Hide resolved
decompile.py Outdated Show resolved Hide resolved
decompiler/frontend/binaryninja/frontend.py Outdated Show resolved Hide resolved
decompiler/frontend/binaryninja/frontend.py Show resolved Hide resolved
decompiler/frontend/binaryninja/frontend.py Show resolved Hide resolved
decompile.py Show resolved Hide resolved
decompile.py Show resolved Hide resolved
decompiler/frontend/binaryninja/frontend.py Show resolved Hide resolved
decompiler/frontend/binaryninja/frontend.py Show resolved Hide resolved
@ebehner ebehner merged commit 0cc75f7 into main Apr 11, 2024
1 check passed
@ebehner ebehner deleted the improve-error-handling branch April 11, 2024 06:20
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.

[[email protected]:33] AttributeError: 'NoneType' object has no attribute 'ssa_form'
2 participants