トップページ > 記事閲覧
Android版
名前:ギウ 日時: 2017/07/04 21:22

お世話になっております。 原因は分からないのですが、Releaseモードで何時間か自動で動かしてると強制終了になることがあります。 ※フリーズではなく、アプリが終了させられてる感じです。 ※Debug版でも出るかどうかは分かりません。 ※今までに3回くらい強制終了になりました。 同じゲームのWindows版ではその症状は出ないです。 もちろんゲーム側の問題ということも考えられるのですが、一応ご報告ということで。
メンテ

Page: 1 | 2 |

Re: Android版 ( No.1 )
名前:管理人 日時:2017/07/05 00:28

ご報告ありがとうございます すみません、幾つかご質問させてください m(_ _;m 1.「自動で動していると」とのことですが、具体的にはどのような処理をされているのでしょうか? 2.Windows版ではその症状はでないとのことですが、Windows版のビルドは 64bit でしょうか?  ( 仮にその場合、使用できるメモリが Android 端末よりも多いので、メモリリークが原因の場合は   単にメモリが不足するまでの時間が Windows版の方が長いだけ、という可能性があります… ) 3.強制終了した際の Log.txt の最後の方はどのような出力になっていますでしょうか?
メンテ
Re: Android版 ( No.2 )
名前:ギウ 日時:2017/07/05 05:50

有難うございます。 試しに、曲と効果音をOFFにして7時間くらい動かしてみましたが、止まってませんでした。 曲か効果音のメモリリークかもですね。こちらの処理も確認してみます。 >1.「自動で動していると」とのことですが、具体的にはどのような処理をされているのでしょうか? あとで送っておきます。 >Windows版ではその症状はでないとのことですが、Windows版のビルドは 64bit でしょうか? 64bitです。 >強制終了した際の Log.txt の最後の方はどのような出力になっていますでしょうか? お。なるほど。 Log.txtはOFFにしてましたので、ONにして試してみます。
メンテ
Re: Android版 ( No.3 )
名前:ギウ 日時:2017/07/05 10:32

BGMとSEを有効にした状態で、1〜2時間で止まりました。 Log.txtはこんな感じです↓(一部を抜粋) ======================= 459:シェーダーコード関係の初期化.... 成功 508:グラフィックを復帰します 509:グラフィックの復帰が完了しました 41310:OpenSL ES のサウンド出力セットアップが失敗しました 41480:OpenSL ES のサウンド出力セットアップが失敗しました 41644:OpenSL ES のサウンド出力セットアップが失敗しました 41672:OpenSL ES のサウンド出力セットアップが失敗しました 42528:OpenSL ES のサウンド出力セットアップが失敗しました 42529:OpenSL ES のサウンド出力セットアップが失敗しました 64998:OpenSL ES のサウンド出力セットアップが失敗しました  :  :(以下、7200行まで行って終了) ======================= これが続いた後に止まってます。 こちらの処理は、 読み込む際、データが有る時は、 StopSoundMem DeleteSoundMem を行った後、 LoadSoundMemByMemImage を実行してます。 この辺りは大丈夫でしょうか?
メンテ
Re: Android版 ( No.4 )
名前:管理人 日時:2017/07/06 01:10

ご返答ありがとうございます > 試しに、曲と効果音をOFFにして7時間くらい動かしてみましたが、止まってませんでした。 > 曲か効果音のメモリリークかもですね。こちらの処理も確認してみます。 > 41310:OpenSL ES のサウンド出力セットアップが失敗しました > 41480:OpenSL ES のサウンド出力セットアップが失敗しました 間違いなくサウンド関連が原因ですね… ただ、『OpenSL ES のサウンド出力セットアップが失敗しました』と出力される原因が複数あるので 現時点ではまだ原因が特定できていません… 『OpenSL ES のサウンド出力セットアップが失敗しました』と出力される原因についてより詳しいログが 出力されるようにしたバージョンを作成してみましたので、大変お手数で申し訳ありませんが よろしければこちらのバージョンで再度エラー終了してしまった際の Log.txt を作成していただけないでしょうか? m(_ _;m https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用 > こちらの処理は、 > 読み込む際、データが有る時は、 > StopSoundMem > DeleteSoundMem > を行った後、 > LoadSoundMemByMemImage > を実行してます。 >  > この辺りは大丈夫でしょうか? すみません、作業をする時間が確保できていなくて、確認できていません ただ、『OpenSL ES のサウンド出力セットアップが失敗しました』と出力されるのは 同時に再生されている音の数が一定数を越えた場合なので、サウンドの削除などが原因で ある可能性はあまり高くないとは思います
メンテ
Re: Android版 ( No.5 )
名前:ギウ 日時:2017/07/06 04:09

了解です。試してみます。 > 同時に再生されている音の数が一定数を越えた場合なので、サウンドの削除などが原因で > ある可能性はあまり高くないとは思います それを踏まえると、「1フレーム中に読み込み済みの同じ音を何度も再生してることがある」んですが (いくつかはそうならないようにしてるんですが、いくつかは面倒だったのでそのままにしてあります;)、 関係してるでしょうか。 その結果、少しずつ何かが溜まっていってるとか。 Log.txtが出来ましたらまたお知らせします。
メンテ
Re: Android版 ( No.6 )
名前:ギウ 日時:2017/07/06 07:40

今のところ止まらないので、もしかしたら直ってるかもしれません。 (こちらのバージョンが古かったとか) 因みに、↓の関数がエラーになってて、 SetAndroidLostFocusCallbackCallbackFunction(p,0); SetAndroidGainedFocusCallbackCallbackFunction(p,0); ↓にしたらコンパイル通りました。 SetAndroidLostFocusCallbackFunction(p,0); SetAndroidGainedFocusCallbackFunction(p,0); ゲームは暫く回しておきます。
メンテ
Re: Android版 ( No.7 )
名前:ギウ 日時:2017/07/07 09:27

もう大丈夫かなと思って、Log.txtをOFFにしてたら止まりました。(30分くらいで) Log.txtをONにした状態だと10時間以上動かしてても止まらなかったんですけど。 LogのON/OFFによる違いがあるんでしょうか。
メンテ
Re: Android版 ( No.8 )
名前:ギウ 日時:2017/07/07 10:21

すみません、止まってない状態のLOGが出力されてましたので送りしておきました。 下記は一部です。 =========== 373:シェーダーコード関係の初期化.... 成功 416:グラフィックを復帰します 418:グラフィックの復帰が完了しました 46208:OpenSL ES のプレイヤーオブジェクトの作成に失敗しました エラーコード:0x00000003 46443:OpenSL ES のプレイヤーオブジェクトの作成に失敗しました エラーコード:0x00000003 46541:OpenSL ES のプレイヤーオブジェクトの作成に失敗しました エラーコード:0x00000003 46572:OpenSL ES のプレイヤーオブジェクトの作成に失敗しました エラーコード:0x00000003 46574:OpenSL ES のサウンド出力セットアップエラー、セットアップされていて且つ使用されていない要素が見つかりませんでした( 同時再生数:15 ) 46581:OpenSL ES のプレイヤーオブジェクトの作成に失敗しました エラーコード:0x00000003 46583:OpenSL ES のサウンド出力セットアップエラー、セットアップされていて且つ使用されていない要素が見つかりませんでした( 同時再生数:15 ) 46640:OpenSL ES のプレイヤーオブジェクトの作成に失敗しました エラーコード:0x00000003 46706:OpenSL ES のプレイヤーオブジェクトの作成に失敗しました エラーコード:0x00000003 =========== 同時に再生し過ぎとかでしょうか?
メンテ
Re: Android版 ( No.9 )
名前:管理人 日時:2017/07/07 22:17

お試しいただきありがとうございます Log.txt もお送りいただきありがとうございます OpenSL ES でエラーが発生している箇所は毎回同じようですね… > もう大丈夫かなと思って、Log.txtをOFFにしてたら止まりました。(30分くらいで) > Log.txtをONにした状態だと10時間以上動かしてても止まらなかったんですけど。 ログ出力は時間のかかる処理なので、ログの内容を変更したことによって再生処理の タイミングが変化してエラーの原因となる状況が発生しにくくなったのかもしれません > 同時に再生し過ぎとかでしょうか? 確かに OpenSL ES でエラーが発生している原因は同時再生数が多いことですが、 DXライブラリとしては同時に再生する数が多くてもエラー終了しないようにしたいところです… Android のサウンド再生に使用している OpenSL ES はギウさんの環境では同時に15個前後の サウンド再生を行うのが限界のようで( 限界数は恐らく環境に依存します )再生処理をする際は 1.既に作成済みの OpenSL ES 再生プレイヤーがあり、且つ使用されていなければそれを使って再生する 2.無ければ新たに OpenSL ES 再生プレイヤーを作成して、それを使って再生する という処理になっていて、再生プレイヤーの限界数に達した状態で 2 の処理を行うと OpenSL ES のAPI呼び出しがエラーとなり再生処理を行えないのですが、 もしかしたらAPI呼び出しでエラーが発生した際に何かメモリリーク的なものが発生して それが蓄積されているのかもしれません なので、上記の処理を以下のように変更して、無駄に OpenSL ES のエラーを発生しないようにしてみました 1.既に作成済みの OpenSL ES 再生プレイヤーがあり、且つ使用されていなければそれを使って再生する 2.作成済みの OpenSL ES 再生プレイヤーの数がエラーが発生した数に達していたら再生プレイヤーの  作成を試みることなくエラー扱いにして、手順3は行わない 3.新たに OpenSL ES プレイヤーを作成して、それを使って再生する、エラーが発生したら  そのときのプレイヤーの数を記録しておく OpenSL ES のAPI呼び出しエラーを頻発させることが本件の原因であれば今回の変更で 本件の現象が解消されると思いますので、何度も申し訳ありませんがよろしければ 上記の変更を加えたこちらのバージョンをお試しください m(_ _;m https://dxlib.xsrv.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用 > 因みに、↓の関数がエラーになってて、 > SetAndroidLostFocusCallbackCallbackFunction(p,0); > SetAndroidGainedFocusCallbackCallbackFunction(p,0); >  > ↓にしたらコンパイル通りました。 > SetAndroidLostFocusCallbackFunction(p,0); > SetAndroidGainedFocusCallbackFunction(p,0); すみません、SetAndroidLostFocusCallbackCallbackFunction と SetAndroidGainedFocusCallbackCallbackFunction は 関数名が間違っていた( Callback という単語が2連続になってしまっていた )ので、修正しました
メンテ

Page: 1 | 2 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存