スタック追跡で記載されている内容を教えてください。

4,147 views
Skip to first unread message

竜野俊介

unread,
May 29, 2014, 10:18:30 AM5/29/14
to android-g...@googlegroups.com
アプリのエラーが送られてきたのですが、全く理解することができません。
どのような知識があれば理解することができるのか分からず困ってしまっています。
また、ネイティブクラッシュと書かれていたのですが、どういう意味なのでしょうか?インターネットで検索しても出てきませんでした。
ご指導お願いします。
GooglePlay内のスタック追跡をコピペします。

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'Verizon/d2vzw/d2vzw:4.3/JSS15J/I535VRUCNC1:user/release-keys'
Revision: '15'
pid: 32726, tid: 32726, name: aphictimer.tgad >>> syunsuke.tatsuno.graphictimer.tgad <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000010
r0 00000000 r1 00000000 r2 00000001 r3 5f302366
r4 00000000 r5 41b7ad68 r6 00000000 r7 419f4cd0
r8 be9e43e8 r9 419f4cc8 sl 41b7ad78 fp be9e43fc
ip 5cfccd54 sp be9e43c8 lr 5cfb29dd pc 40d30548 cpsr 60000030
d0 0000000000000000 d1 0000000000000000
d2 000003e800000000 d3 0000000000000008
d4 0000000000000000 d5 0000000000000000
d6 0000000000000000 d7 0000000000000000
d8 0000000000000000 d9 4270000042080000
d10 403fda0042bc0000 d11 403827485a00b037
d12 438bbf244411d8e6 d13 403827485a00b037
d14 431e290841c13a43 d15 4336507243365050
d16 0074006900760069 d17 006e0061004d0079
d18 002e00640069006f d19 0077006500690076
d20 006900570049002e d21 0077006f0064006e
d22 0073007300650053 d23 0000006e006f0069
d24 0088008700860084 d25 008a0088008a0089
d26 0000000000000000 d27 0000000000000000
d28 0072007000720071 d29 0076007500740073
d30 008a008a008a008a d31 0000000000000000
scr 88000013

backtrace:
#00 pc 00066548 /system/lib/libmedia.so (android::MediaRecorder::stop()+3)
#01 pc 000199d9 /system/lib/libmedia_jni.so
#02 pc 00020b4c /system/lib/libdvm.so (dvmPlatformInvoke+112)
#03 pc 000516ab /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+398)
#04 pc 00029fe0 /system/lib/libdvm.so
#05 pc 0002e9a4 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#06 pc 00063aeb /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+350)
#07 pc 0006b80f /system/lib/libdvm.so
#08 pc 00029fe0 /system/lib/libdvm.so
#09 pc 0002e9a4 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#10 pc 0006382d /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+292)
#11 pc 0004d27f /system/lib/libdvm.so
#12 pc 0005477b /system/lib/libandroid_runtime.so
#13 pc 00055ca3 /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+378)
#14 pc 0000105b /system/bin/app_process
#15 pc 0000ddf7 /system/lib/libc.so (__libc_init+50)
#16 pc 00000d7c /system/bin/app_process

code around pc:
40d30528 f04fed94 bd104000 00010111 0001a843 
40d30538 0001a84f 0001a7f7 0001aeb7 4604b538 
40d30548 b9386900 20064915 44794a15 f7e9447a 
40d30558 e009ed7c 06dd69e3 4912d409 4a122006 
40d30568 447a4479 ed70f7e9 0525f06f 6803e013 
40d30578 47886d59 b1484605 2006490c 462b4a0c 
40d30588 447a4479 ed60f7e9 e0032000 f7ff4620 
40d30598 2001ff8b 462861e0 bf00bd38 0001a7c7 
40d305a8 0001a7d3 0001a7b1 0001ae93 0001a791 
40d305b8 0001ae97 6900b508 6803b118 47886e59 
40d305c8 f06fbd08 bd080025 4604b538 460d680b 
40d305d8 6a4a6003 0c0cf853 46205022 f8406a89 
40d305e8 f1051f04 f7e90114 4620eed4 f7fb1d29 
40d305f8 4620f915 b538bd38 f101460d 46040108 
40d30608 f87af7fb 0118f105 f7ea1d20 686be88a 
40d30618 f8536023 6aaa0c0c 6ae95022 682b6061 

code around lr:
5cfb29bc bd1cffdd 00012665 000132a6 4604b513 
5cfb29cc a801460a f7ff4621 9801ff71 ed7af7f7 
5cfb29dc 4b064a05 447b447a 46204601 feacf7ff 
5cfb29ec f7ffa801 bd1cffc3 00012631 00013287 
5cfb29fc 4604b513 a801460a f7ff4621 9801ff57 
5cfb2a0c ed66f7f7 4b064a05 447b447a 46204601 
5cfb2a1c fe92f7ff f7ffa801 bd1cffa9 000125fd 
5cfb2a2c 00013260 4604b513 4668460a f7ff4621 
5cfb2a3c a902ff3d 98002300 3d04f841 ed4ef7f7 
5cfb2a4c 4b074a06 447b447a 46204601 fe74f7ff 
5cfb2a5c 46689c01 ff8af7ff bd1c4620 000125c1 
5cfb2a6c 00013232 461db5f0 46144b1b b0974a1b 
5cfb2a7c 468e447b a8034607 4639589e 68334672 
5cfb2a8c f7ff9315 4b16ff13 21002240 4500e9cd 
5cfb2a9c a805447b ec08f7f7 a9059c03 f7f7a804 
5cfb2aac a904ecfa f7f74620 4a0eed20 447a4b0e 

さわださとし

unread,
May 29, 2014, 1:09:11 PM5/29/14
to android-g...@googlegroups.com
さわだです。

> また、ネイティブクラッシュと書かれていたのですが、どういう意味なのでしょうか?インターネットで検索しても出てきませんでした。

JNIで呼び出した先でのエラーですね。

> GooglePlay内のスタック追跡をコピペします。
>
> *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
> Build fingerprint:
> 'Verizon/d2vzw/d2vzw:4.3/JSS15J/I535VRUCNC1:user/release-keys'
> Revision: '15'
> pid: 32726, tid: 32726, name: aphictimer.tgad >>>
> syunsuke.tatsuno.graphictimer.tgad <<<
> signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000010

武藤さんも書いてますが、ログのこの部分に出ている SIGSEGV は、
不正なメモリアドレスにアクセスしたときに発生するエラーです。
UNIXプログラミングすると頻繁に遭遇します。(←すんな)

> backtrace:
> #00 pc 00066548 /system/lib/libmedia.so (android::MediaRecorder::stop()+3)
> #01 pc 000199d9 /system/lib/libmedia_jni.so
> #02 pc 00020b4c /system/lib/libdvm.so (dvmPlatformInvoke+112)
> #03 pc 000516ab /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*,
> JValue*, Method const*, Thread*)+398)
> #04 pc 00029fe0 /system/lib/libdvm.so
> #05 pc 0002e9a4 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*,
> JValue*)+184)
> #06 pc 00063aeb /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method
> const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+350)

このあたりを見た感じでは、何かのクラスがJNIメソッドを呼び出して、
その先で MediaRecorder::stop()を呼び出したところでアクセス違反を
起こしているみたいですね。

ということは、録音か録画をするアプリでしょうか?
通常は普通に録音や録画ができているのなら、なんらかの特殊な条件で、
このエラーが発生している可能性があるのかもしれません。

--
さわださとし
http://www.satoshis.com/

竜野俊介

unread,
May 29, 2014, 9:02:22 PM5/29/14
to android-g...@googlegroups.com
お返事ありがとうございます。
お察しの通り録音する機能が付いたタイマーアプリです。
お恥ずかしいことに勉強不足でJNIという単語自体始めて聞きました。
少し調べてみると、JAVAとC/C+を連携するものと出てきました。androidの内部でそんなこともしていたなんて驚きです。
特殊な条件でと書かれていましたが、以前もギャラクシーのみでエラーが報告されることがありました。やっぱり録音・再生関係です。

私の知識では、バージョンアップ等で対応する方法が思い浮かばないのですが、これからどんなことを勉強すれば解決につながるのでしょうか?


2014年5月30日金曜日 2時09分11秒 UTC+9 Satoshi Sawada:
Message has been deleted

kacodama

unread,
May 29, 2014, 10:22:32 PM5/29/14
to android-g...@googlegroups.com
JNIを自分で呼び出していなく、ましてその先のネイティブモジュールも自作で無いとすると、修正は難しい気がしますが、
私であれば、まず再現性を確かめます。どんな条件で起きるのか、その条件なら100%なのか、
もっと複雑な条件が絡んでいそうなのか?
あとは発生頻度ですね。頻繁なのかレアなのか。
録音・録画中のエラーなら、容量不足・メモリ不足なども考えられるかな?と当たりを付けていきますかね。
あるいは、渡しているバッファが実はJava側で既に解放されて無いかとか。

Androidは端末により動作が異なることも多いです。特定の機種で起こっていて、
追いきれなければ、「不具合が起こる可能性の高い端末」として、説明文に告知するとか、
非推奨端末にするという選択肢もありかと思います。

以上、参考になれば幸いです。

竜野俊介

unread,
May 30, 2014, 7:05:19 PM5/30/14
to android-g...@googlegroups.com
お返事ありがとうございます。
エラーが起きている部分の修正は難しいのですね。エラーの頻度としては報告が来るものは年に1・2回なので、わたしか把握している限りは少ないのですが、全て送ってくれているわけではないと思うので一応対応できればと考えていました。確かに再現ができれば対応ができる気がします。機種をよく調べて再現できるかやってみます。
容量不足・メモリ不足に近いのですが一つ思い当たることがあります。録音したデータをSDカードに保存するようにしてあるのですが、もしかするとSDカードを利用されていない(もしくは利用できない機種)でのエラーの可能性がありそうです。自分では、SDカードの利用できない端末は持っていないのですが、海外からの報告が多いのでもしかすると・・・というような気がします。

お返事ありがとうございます。さっそく調べてみようと思います。

2014年5月30日金曜日 11時22分32秒 UTC+9 kacodama:
Reply all
Reply to author
Forward
0 new messages