Android Fatal signal 11 SIGSEGV

Android

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させないようにしたら治りました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です