Version and Platform (required):
- Binary Ninja Version: 4.1.4920-dev Personal (23c8f602)
Bug Description:
BNDB

Something is clearly suspect about these this != -0x10 comparisons. I've seen similar patterns many times before, and what they all seem to have in common is the use of the lea instruction.
Disassembly:

Some things that stand out to me here:
- At
7ff69b3fe209, rbx holds a pointer to the FMallocThreadSafeProxy::lock field (typed as FCriticalSection). Yet BN seems to think that rbx holds an FMallocThreadSafeProxy pointer.
- The
test at 7ff69b3fe20d is checking that the pointer to the lock field is non-null (which it can obviously never be).
There's nothing interesting in LLIL here, but switching to MLIL, it seems like the types are right:

None of the advanced IL forms reveal anything interesting AFAICT. The problem seems to occur somewhere during the translation to HLIL.
I don't know if the lea instruction is actually causing this issue, but again, whenever I see this particular pattern of incorrect decompilation, it's always involved a lea.
Version and Platform (required):
Bug Description:
BNDB
Something is clearly suspect about these
this != -0x10comparisons. I've seen similar patterns many times before, and what they all seem to have in common is the use of theleainstruction.Disassembly:
Some things that stand out to me here:
7ff69b3fe209,rbxholds a pointer to theFMallocThreadSafeProxy::lockfield (typed asFCriticalSection). Yet BN seems to think thatrbxholds anFMallocThreadSafeProxypointer.testat7ff69b3fe20dis checking that the pointer to thelockfield is non-null (which it can obviously never be).There's nothing interesting in LLIL here, but switching to MLIL, it seems like the types are right:
None of the advanced IL forms reveal anything interesting AFAICT. The problem seems to occur somewhere during the translation to HLIL.
I don't know if the
leainstruction is actually causing this issue, but again, whenever I see this particular pattern of incorrect decompilation, it's always involved alea.