-
Notifications
You must be signed in to change notification settings - Fork 9
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
ValueError: At least two variables in an identity group have out degree zero #135
Comments
Notes on the problem itself:
==> Some times uninitialized should be in the group of out-nodes (or completely purges from the dependency graph). |
Smaller Code which probably represents the same problem: int f1(int argc){
char* g_1 = "dump global str1";
char* g_2 = "dump global str2";
char* ptr;
if(argc){
g_1 = ptr;
}else{
g_2 = ptr;
}
return g_1;
} Output of Decompiler: void * f1(int arg1) {
return "dump global str1";
} The stage incorrectly merges var_10#0, var_20#3 and "dump global str1" into "dump global str1", completely destroying the correct control flow. Binary for testing: |
Note: All three functions in the binary have the same problem, but main behaves differently because of the return type. |
Many more binaries have the problem. All binaries are part of the GNU core utils |
Updated log for Windows bins: |
Issue #388 only solves some of the problems mentioned in this Issue. It does not address #135 (comment) |
What happened?
The decompiler crashes with a ValueError in identity_elimination.
How to reproduce?
Decompile main in the following sample.
seq.zip
Affected Binary Ninja Version(s)
3.2.3814
The text was updated successfully, but these errors were encountered: