INTERR 50683 + vds3 plugin

iam use vds3 plugin for invert if/else
but something wrong after invert simple if/else for a function
i got INTERR 50683

after delete plugin vds3 all ok
put it again INTERR again

so questions
1 how manual from console remove info for vds3 from idb about this function here INTERR got?
2 can you some thing improve in vds3 for this case?

after little research
found how to erase this ea from vds3 node base
and all ok after F5

but if i try use again “invert then/else”
and press F5
i got INTERR 50683 again

i guess vds3 can’t correct handle some case with invert

Hello @revs,
Thanks for reporting this specific issue.
We’ll follow up shortly once we’ve looked into it further, or if we have more questions to help narrow it down and reproduce.

You can find the check in verifier/cverify.cpp:

    case cit_if:
      if ( maturity < CMAT_TRANS1 || maturity >= CMAT_CASTED )
      {
        ea_t jea = i->cif->expr.calc_jmp_cnd_ea();
        if ( jea != BADADDR && i->ea != jea )
          CFAIL_QASSERT(50683, i); // ctree: mismatch in if-statement and its expression addresses
      }

It could be that vds3 produces a wrong item, or maybe there is interaction with other optimization steps.
Would it be possible to have an idb demonstrating the issue?

i saw verifier
it doest help me

i can attach lilte chunk of binary sample
which produce the issues
but there is no avail attach at forum

you can use Help > Send database… from IDA.

Your reference is SUPPORT-4861

1 Like

Thank you for the sample, we can reproduce the issue!

whould be nice if you add rule to hexrays decompiler to sort all “if else” as ascending EA before you break ast ctree by “return” rule

i mean

if (condition)
{
this body EA 0x1234567
} else
{
this body EA 0x1234568
}

this rule can be append into vds3 plugin
but there not all ast ctree will change, because you have “return” as more priority

The interr will be fixed in IDA 9.2.

is this hexrays core fix or plugin vds3?

and how about order of if else by ea ?