Android Fatal signal 11 SIGSEGV というエラーが出て強制終了する
昨今Androidで動画を撮るというプロジェクトにまい進している私ですが(Android ビデオを録画するサンプルコード)、謎のエラーで強制終了してしまうというエラーにかなりはまってしまいました。
Fatal signal 11 (SIGSEGV) at 0x00000010 (code=1), thread 30664
というエラーが出て、いきなり落ちちゃうんですねー。
使っていた端末は、Galaxys3aです。
SIGSEGV(しぐせぐぶ??)とは、セグメンテーション違反の際におこるエラーで、Wikipediaさんに詳しいです。
セグメンテーション違反
StackOverflowさんにもいくつか記事がありますが、Javaが吐くエラーではないので、ファームウェアとかの問題だ、という話もあります。。。
http://stackoverflow.com/questions/11274341/android-sigsegv-error-when-recording-audio
「どうすればええのんや…」
と悩み、まずは色々とtry~chatchでエラー箇所を捕捉しようと考えましたが、セグメンテーション違反でJavaのエラーではないので、try~catchでは捕捉できませんでした。
デバッグをしてみたところ、落ちるタイミングを発見。
mrec = new MediaRecorder(); //中略 mrec.stop(); //このstopでSIGSEGVエラー mrec.reset(); mrec.release();
どうやら既にストップしていたmrecをstop()させていたことが原因のようです。
フラグを作って、stopしたかどうかを判断し、一度ストップしたmrecをもうstopさせないようにしたら治りました!!