Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p><s>I'm a bit concerned that the code generated for <code>if (wsdHooks.xBenignBegin)</code> isn't very general. It assumes the only true value is <code>1</code> whereas it should really be testing for <em>any</em> nonzero value. Still, MSVC is sometimes baffling that way. It is probably nothing.</s> Never mind: these instructions are for <code>C</code> code not presented.</p> <p>Given that the eflag <code>Z</code> bit is clear and <code>EAX</code> is zero, the code did not get here by executing the instruction</p> <pre><code>719f9fa7 test eax,eax </code></pre> <p>There must be a jump from somewhere else to the instruction following (<code>719f9fa9 je SQLite_Interop!pcache1Fetch+0x2d</code>) or even the <code>call</code> instruction itself.</p> <p>Another complication is that with the x86 family, it is common for an invalid jump target (like the second byte of the <code>JE</code> instruction) to execute unperturbed (no faults) for quite a few instructions, often eventually getting back on the proper instruction alignment. Said another way, you may not be looking for a jump to the beginning of any of these instructions: a jump might be in the midst of their bytes, resulting in executing unremarkable operations like <code>add [al+ebp],al</code> which tend not to be noticed.</p> <p>I predict that a breakpoint at the <code>test</code> instruction will not be hit for the exception. The only ways to find such causes is either to be very lucky, or to suspect everything and prove them innocent one-by-one.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload