title: Why fault address is 0x00000006 for SIGSEGV on 32bits ARM platform?
body: <p>I met a SEGV_MAPERR crash in my program. </p>
  
  <pre><code>pid: 934, tid: 934, name: Binder_1  &gt;&gt;&gt; system_server &lt;&lt;&lt;
  signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000006
  backtrace:
      #00  pc 00000006  &lt;unknown&gt;
      #01  pc 00006925  /system/lib/libcutils.so (set_sched_policy+136)
      #02  pc ffffffff  &lt;unknown&gt;
  </code></pre>
  
  <p>I can understand the fault address is 0x00000000 or 0x00000004 or something others. For example, invalid class virtual base pointer, or invalid/wild function pointer.</p>
  
  <p>But I can not understand the 0x00000006 as a fault address. Was the stack modifed illegally? But nearby the wrong code, neither the return statement, nor jump instrument were found. </p>
  
  <p>Is there any other potential reason? Thank you very much!   </p>