In new builds of Radare, I'm getting

Missing cjmp bb in predecessor at 0x1006aa416

What does this mean? I filed a bug on this here. But, it was answered with

Thanks for reporting but this is a warning, not an error it is caused by the analysis of jump tables in your binary.

What is the cause of this warning?

bb refers to basic block, which is a sequence of instructions without branches (except possibly at the end), and corresponds to nodes in a control flow graph (CFG), a structure commonly used in program analysis.

cjmp is obviously a conditional jump. Apparently the analysis code did not find an expected pattern and is warning you that the results may be not so good because of that.

If we look at the message in the source code, we can see the "decrypted" message in the comment:

// predecessor must be a conditional jump

This code seems to be analyzing patterns for jump tables, a common issue in disassemblers because they often mix data with code, and need to be recognized for proper disassembly. The current analyzer seems to expect a specific pattern (likely the one present in Linux/GCC-produced files) but your file uses an instruction sequence that does not match its expectations. There are following possibilities:

  • the instruction is not for a table jump but something else (e.g. a function pointer call). In that case you can probably ignore the warning.

  • it is a table jump but for one reason or another the code fails to recognize it. If you find that it prevents proper analysis, you can try fixing the code yourself or submitting a feature request.

Interestingly, I looked at the address in question, and apparently there is a conditional jump in the predecessor block, so there may be some subtle bug in some other part of the code (e.g. basic block analysis) that prevents it from making the match.

fragment of the function

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.