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

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

Page: 1 | 2 |

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 http://dxlib.o.oo7.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用 > 因みに、↓の関数がエラーになってて、 > SetAndroidLostFocusCallbackCallbackFunction(p,0); > SetAndroidGainedFocusCallbackCallbackFunction(p,0); >  > ↓にしたらコンパイル通りました。 > SetAndroidLostFocusCallbackFunction(p,0); > SetAndroidGainedFocusCallbackFunction(p,0); すみません、SetAndroidLostFocusCallbackCallbackFunction と SetAndroidGainedFocusCallbackCallbackFunction は 関数名が間違っていた( Callback という単語が2連続になってしまっていた )ので、修正しました
メンテ
Re: Android版 ( No.10 )
名前:ギウ 日時:2017/07/08 05:57

ご対応有難うございます! >もしかしたらAPI呼び出しでエラーが発生した際に何かメモリリーク的なものが発生してそれが蓄積されているのかもしれません なるほど、それな感じがします。 最新版の方、現在Log無しで試し中です。 また書き込みます。
メンテ
Re: Android版 ( No.11 )
名前:ギウ 日時:2017/07/08 20:11

大丈夫かなと安心してたら、4、5時間後に止まりました; しかもLog.txtの無しの方なので、詳しくは分かりません。。 今、Log.txtの状態で数時間やってますが、まだエラーは出力されてないです。 一先ず状況報告ということで。 P.S ゲーム側で、同じ音を鳴らさないような処理を加えれば、もっと延命できるかなとは思いますが、まずはこの状態でデバッグしておきます。
メンテ
Re: Android版 ( No.12 )
名前:ギウ(解決) 日時:2017/07/08 21:54

Log.txtが有効だと、止まったりエラーが出力されたりはしないのかもしれません。 試しに、効果音鳴らしまくるプログラムも実行してみましたが大丈夫でした。 なのでこの件は一先ず大丈夫ということにして(すみません;)、ゲーム側の音処理が少なくなるように調整しておこうと思います。 もしまた止まった時はお知らせします! ご対応有難うございました。
メンテ
Re: Android版 ( No.13 )
名前:管理人(解決) 日時:2017/07/10 00:00

お試しいただきありがとうございます すみません、駄目でしたか… ログが有効だと止まらないのは、謎です… > もしまた止まった時はお知らせします! よろしくお願いします m(_ _;m あと、今更で申し訳ありません No.3 のお話ですが > こちらの処理は、 > 読み込む際、データが有る時は、 > StopSoundMem > DeleteSoundMem > を行った後、 > LoadSoundMemByMemImage > を実行してます。 こちらについてもう少し詳しく教えていただけないでしょうか 「読み込む際、データが有る時」とは、どのような状況でしょうか? 再生処理を配列のようなもので管理していて、サウンドデータを読み込もうとした スロットに既に有効なサウンドハンドルが存在する場合、 StopSoundMem, DeleteSoundMem を行うということでしょうか? > 試しに、効果音鳴らしまくるプログラムも実行してみましたが大丈夫でした。 お試しされたのは、No.3 のお話と同じような方式( データが既にあったら StopSoundMem, DeleteSoundMem を行った後 LoadSoundMemByMemImage を実行する )で 効果音を鳴らしまくられたのでしょうか?
メンテ
Re: Android版 ( No.14 )
名前:ギウ 日時:2017/07/10 22:02

>再生処理を配列のようなもので管理していて、サウンドデータを読み込もうとした >スロットに既に有効なサウンドハンドルが存在する場合、 >StopSoundMem, DeleteSoundMem を行うということでしょうか? そうです。 配列にサウンドハンドルを入れておいて、それが0以外なら、StopSoundMem, DeleteSoundMemを実行した後、読み込む感じです。 なので、再生中かどうかに関係なく、StopSoundMemを呼んでます。 >StopSoundMem, DeleteSoundMem を行った後 LoadSoundMemByMemImage を実行する )で >効果音を鳴らしまくられたのでしょうか? それも使いましたが(1フレームに2回くらい)、主に読み込み済みのを PlaySoundMem しまくりました。
メンテ
Re: Android版 ( No.15 )
名前:管理人 日時:2017/07/11 02:40

ご返答ありがとうございます 教えていただいたご情報を元に PlaySoundMem しまくるテストプログラムを組んでみたところ、 手元の環境でもエラーが発生しました! 手元の環境ではログが無効でもエラーが発生しました また、まだはっきりとは確認できていませんが、StopSoundMem, DeleteSoundMem を使用せず PlaySoundMem を実行するだけでもエラーが発生した可能性も…( エラーになったタイミングを 目撃できていないので、まだ確証は得られていません… ) 一度のテストに時間が掛かるので、修正には時間が掛かるかもしれませんが、修正ができたら お伝えします m(_ _;m
メンテ
Re: Android版 ( No.16 )
名前:ギウ 日時:2017/07/11 08:32

おお! 再現できたとのことで良かったです。 よろしくお願いいたします。
メンテ
Re: Android版 ( No.17 )
名前:ギウ 日時:2017/07/11 11:50

別件でGoogleのサポートの方とやり取りをしてるのですが、 色々あってAPIレベルを18以上にすることになりました。 APIレベルがどういうものかイマイチ分かってないのですが(DirectXでいうバージョン番号みたいな感じ?)、 もし昔のAPIのバグが直るとかなら、今回のも関係するのかなと思いましたので一応書きこんでおきます。 尚、APIレベルの変更方法は、AndroidManifest.xml 内を、 ↓な感じにすれば18以上になるようです。 <uses-sdk android:minSdkVersion="18" android:targetSdkVersion="19"/>
メンテ
Re: Android版 ( No.18 )
名前:ギウ 日時:2017/07/11 13:47

APIレベルについて、 「古いAPIのバグが直るというわけではなく、単純に配信対象が上位のAPIになるだけですので、バグ自体はそのまま残ります」 とのことでした; 残念。
メンテ
Re: Android版 ( No.19 )
名前:管理人 日時:2017/07/13 01:29

未だ原因究明中です( StopSoundMem, DeleteSoundMem, LoadSoundMemByMemImage の処理を行うと 比較的すぐにエラー終了して、PlaySoundMem だけを使用すると数時間はエラー終了しないということが 分かりました、現在原因かもしれない箇所を少し変更して実行テスト中です… ) > APIレベルがどういうものかイマイチ分かってないのですが(DirectXでいうバージョン番号みたいな感じ?)、 > > 「古いAPIのバグが直るというわけではなく、単純に配信対象が上位のAPIになるだけですので、バグ自体はそのまま残ります」 > とのことでした; 残念。 ご情報ありがとうございます APIレベルが上がると使用できるAPIや引数のタイプが増えたり仕様が変わったりという感じです Windowsで言うなら『UpdateLayeredWindow という Win32 API は Windows2000 以降であれば使用できます』みたいな感じです DirectX はバージョンが上がると使用する API も全部変わってしまうので、DirectX では例えることが できないかもしれません…
メンテ
Re: Android版 ( No.20 )
名前:ギウ 日時:2017/07/13 18:24

あ、確かにDirectXはまた違いますね。 >未だ原因究明中です( StopSoundMem, DeleteSoundMem, LoadSoundMemByMemImage の処理を行うと なるほど、こっちの方が止まりやすいんですね。 では一先ずこちらは、「なるべく予め読み込んでおく」感じで調整しておきます。 >現在原因かもしれない箇所を少し変更して実行テスト中です… おお。止まりませんように!
メンテ
Re: Android版 ( No.21 )
名前:管理人 日時:2017/07/14 01:40

> おお。止まりませんように! 4〜5時間は大丈夫だったのですが、朝起動したまま出かけて、夜帰ってきたら終了していました ただ、他の電子機器も画面がONになっていたりと何やら違和感があって、停電か何か発生した可能性があります なのでエラー終了かどうかは分かりませんでした… そんなわけで今しがたテスト実行を再度開始したところなので、結果は明日に持ち越しとなりました (_ _;;
メンテ
Re: Android版 ( No.22 )
名前:ギウ 日時:2017/07/15 08:18

如何でしょうか。 こちらは昨日、1回止まりました。(LOG無し。延命効果は出てる感じしてます) 私の方でも実行チェックしますので、必要でしたら途中状態でもアップしてくださいませ^^ -- あとPS系の方にも書き込みしました。
メンテ
Re: Android版 ( No.23 )
名前:管理人 日時:2017/07/15 14:53

ご情報ありがとうございます こちらも再テストでも止まってしまい、現在更に処理を変更して再度テスト中です ( StopSoundMem, DeleteSoundMem, LoadSoundMemByMemImage を行うテストで2時間弱問題なく 動作しているので、今度こそ直せたかもしれません ) 結果が出ましたら追記します > あとPS系の方にも書き込みしました。 すみません、昨日は疲れていたので帰宅後ご返信することができませんでした 後ほどご返信しますので少々お待ちください
メンテ
Re: Android版 ( No.24 )
名前:管理人 日時:2017/07/16 01:00

とりあえず11時間経過してもエラー終了しないことが確認できました このまま20時間くらいまでテストは続けますが、直っている可能性が高いので よろしければギウさんもお試しになってみてください m(_ _)m http://dxlib.o.oo7.jp/temp/DxLibAndroidTest_ARM.exe // Android版 ARM用
メンテ
Re: Android版 ( No.25 )
名前:ギウ(解決) 日時:2017/07/16 08:15

お疲れ様です! DLしました。 こちらでも普通にまわしてみます。 (もし何かあればまた書き込みます) 有難うございました。
メンテ
Re: Android版 ( No.26 )
名前:管理人(解決) 日時:2017/07/16 22:28

> こちらでも普通にまわしてみます。 > (もし何かあればまた書き込みます) ありがとうございます、よろしくお願いします m(_ _)m とりあえず手元では32時間経過してもエラー終了しませんでした
メンテ
Re: Android版 ( No.27 )
名前:ギウ(解決) 日時:2017/07/17 07:47

おお。完璧ですね^^ こちらも全く問題ありません。 ではサウンド関連は完全解決ということで! 良かったです。
メンテ

Page: 1 | 2 |

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

   クッキー保存