Note that there are some explanatory texts on larger screens.

plurals
  1. POSIGILL in Android NDK code
    primarykey
    data
    text
    <p>I have an NDK app out on market and got a native crash report about a <code>SIGILL</code> signal. (I use google breakpad to generate native crash reports.) Here are the details:</p> <ul> <li>My app is compiled for <code>armeabi-v7a</code>, <strong>with</strong> NEON support.</li> <li>It crashed on a NVIDIA Tegra 2 Processor, which is ARM-7 (Cortex-A9).</li> <li>It happens every time. (contacted the user)</li> <li>The crash address was at <code>0x399cc</code>, the signal was <code>SIGILL</code>, and it's in my code.</li> </ul> <p>Registers and disassembly:</p> <pre><code> r4 = 0x001d50f0 r5 = 0x001d50f0 r6 = 0x598e2a3c r7 = 0x00000000 r8 = 0x00000001 r9 = 0x001c22b0 r10 = 0x00000000 fp = 0x81216264 sp = 0x598e2a18 lr = 0x816399cb pc = 0x816399cc 0x000399c6 &lt;_ZN8Analyzer15setExpAvgFactorEi+22&gt;: blx 0x30508 0x000399ca &lt;_ZN8Analyzer15setExpAvgFactorEi+26&gt;: fconstd d16, #7 0x000399ce &lt;_ZN8Analyzer15setExpAvgFactorEi+30&gt;: vldr d17, [pc, #32] ; 0x399f2 &lt;_ZN8Analyzer15setExpAvgFactorEi+66&gt; </code></pre> <p>Full source and assembler available <a href="http://pastebin.com/hqgeKtSG" rel="noreferrer">here</a> (it's short, basically 2 lines of C++.)</p> <p>You can see that <code>0x399cc</code> is in the middle of the <code>fconstd</code> instruction. According to <a href="http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204g/CJAEFGHE.html" rel="noreferrer">arm.com</a> this instruction was added in <code>VFP-v3</code>, which should (I think) be available in any modern processor.</p> <p>What could be going on? Does the fact that the address is in the <em>middle</em> of an instruction point to a corrupt pointer somewhere? (Note that the backtrace makes perfect sense, so it's not like this function was somehow called on accident.) Or is it something else?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
 

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