Android NDK ツール チェーンでコンパイルするネイティブ ソースがあります。この共有ライブラリは、Android デバイスで実行されている mediaserver プロセスによって読み込まれます。通常、ユーザー空間プロセスのいずれかがクラッシュすると、Android のデバッガー デーモンがクラッシュしたプロセスのスタック トレースを取得し、logcat メッセージに出力します。しかし、logcat ログにスタック トレースがなく、mediaserver プロセスがクラッシュするのを時々見ますが、カーネル ログには、mediaserver プロセスにページ フォールトがあることを示すスタック トレースが出力されます。PC、LR、その他のレジスタを出力します。では、この情報をデコードして、問題のあるコードのアドレスを特定するにはどうすればよいでしょうか?
サンプル トレースを次に示します。
<7>[ 198.755417] mediaserver: unhandled page fault (11) at 0x7b969000, code 0x817
<1>[ 198.755424] pgd = e005c000
<1>[ 198.757092] [7b969000] *pgd=25865831, *pte=00000000, *ppte=00000000
<4>[ 198.764864] Pid: 1957, comm: mediaserver
<4>[ 198.769647] CPU: 2 Tainted: G W (3.4.0-gf77558a-00009-gb024756 #2)
<4>[ 198.777010] PC is at 0x40082728
<4>[ 198.780007] LR is at 0x408
<4>[ 198.782702] pc : [<40082728>] lr : [<00000408>] psr: 20000010
<4>[ 198.782703] sp : 75393dd0 ip : 00001ba0 fp : 00000002
<4>[ 198.794310] r10: 483463c0 r9 : 00000000 r8 : 00001200
<4>[ 198.799373] r7 : 6afdf950 r6 : 6aff0db8 r5 : 412ef814 r4 : 7b68c008
<4>[ 198.806293] r3 : ff1b1517 r2 : 0034bc00 r1 : 48346000 r0 : 7b968fe8
<4>[ 198.812546] Flags: nzCv IRQs on FIQs on Mode USER_32 ISA ARM Segment user
<4>[ 198.819848] Control: 10c5787d Table: 2805c06a DAC: 00000015
<4>[ 198.825432]
<4>[ 198.825433] R3: 0xff1b1497:
<4>[ 198.829572] 1494 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.837734] 14b4 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.845893] 14d4 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.854070] 14f4 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.862211] 1514 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.870371] 1534 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.878532] 1554 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.886693] 1574 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.894851] 1594 ******** ******** ******** ******** ******** ******** ******** ********
<4>[ 198.903028] [<c0013da4>] (unwind_backtrace+0x0/0x11c) from [<c0019980>] (__do_user_fault+0x110/0x15c)
<4>[ 198.912347] [<c0019980>] (__do_user_fault+0x110/0x15c) from [<c0786384>] (do_page_fault+0x380/0x3d0)
<4>[ 198.921358] [<c0786384>] (do_page_fault+0x380/0x3d0) from [<c0008514>] (do_DataAbort+0x134/0x1a8)
<4>[ 198.930251] [<c0008514>] (do_DataAbort+0x134/0x1a8) from [<c0784bb4>] (__dabt_usr+0x34/0x40)
<4>[ 198.938631] Exception stack(0xddd8bfb0 to 0xddd8bff8)
<4>[ 198.943658] bfa0: 7b968fe8 48346000 0034bc00
ff1b1517
<4>[ 198.951801] bfc0: 7b68c008 412ef814 6aff0db8 6afdf950 00001200 00000000 483463c0 00000002
<4>[ 198.960035] bfe0: 00001ba0 75393dd0 00000408 40082728 20000010 ffffffff