Assertion 'sect' failed
TambourineReindeer opened this issue · comments
When I try to decompile a certain Linux elf executable, I get SIGABRT and this error:
boomerang: /home/razzy/Desktop/boomerang/loader/elf/ElfBinaryFile.cpp:277: virtual bool ElfBinaryFile::RealLoad(const QString&): Assertion `sect' failed.
Since the executable is from a commercial video game (Teleglitch), I'm not sure how to have others test it :/ The Windows executable works fine, however, and decompiles to completion.
This is likely caused by the failure of this check
if(SectionMap.find(interval<ADDRESS>::right_open(from,to))!=SectionMap.end()) {
return nullptr;
}
And this check fails when trying to create a section that overlaps with existing one.
What might help in tracking the problem down is posting output from objdump -h EXECUTABLE_NAME
Before I go to bed, here you go:
objdump.txt
Hope it helps for now!
At a glance the sections look OK, and should be read properly by boomerang. I've tried running boomerang on teleglitch linux demo and it did not crash on that, so must be some difference between demo and release executables.
Oh, I can try checking it myself (Is it the Gamefront download?). I wonder if something changed between the game at the original release (and demo) and the "Die More Edition" update.
Hmm..I tried running the Linux demo through Boomerang and had another assertion failure (subExp1). I attached console output from Boomerang:
output_teleglitch32_demo.txt
Here is the output again from the full release (with the latest version of Boomerang; when I posted this issue I was using one from a few weeks ago):
Not adding 0 sized section ""
Segment ".strtab" would intersect existing one ".interp"
boomerang: /media/razzy/Storage/Projects/Source Codes/Disassembly/boomerangc/loader/elf/ElfBinaryFile.cpp:252: virtual bool ElfBinaryFile::LoadFromMemory(QByteArray&): Assertion `sect' failed.
So as you said, there is a section overlapping with another.
This should be fixed in the current develop version, so I'm closing this.