2025年3月20日木曜日

続:中華linuxゲーム端末でセガサターン

前回何とかAdvancedWorldWarを許容範囲で動かすことができるようになったが、しばらく動かしていると死ぬ問題が発生した。

カーネルログを見るとOOM-killerで殺されているように見える。

ps をwhileで回しながら動かしてみると、画面が切り替わるたびにメモリが増えていき減ることがない模様。そして限界を超えると殺される。 

メモリリークの可能性がある。が、どうやって調べるか。

valgrindは動かなかった。ld.soにデバッグ情報がないため。イメージ丸ごとビルドはできそうだが、現状途中で止まる。 

あとはmallocをフックするやつを作るか、探してくるか。それで調べたところによるとglibc mallocはいけてないらしい。もしかしたらjemallocを使えば解決するのかも。

うーん。めんどくさい。

jemallocクロスコンパイル

また何度かこけるかと思ったが、驚くほどすんなりとクロスコンパイルできた。

https://github.com/jemalloc/jemalloc/tree/master

からとってくる。

yabasanshiroのビルドのログから、 ツールチェーンの場所が分かるので、パスを通し

./configure --host=aarch64-rocknix-linux-gnueabi

make

 で完了。libにできたライブラリをコピーする。

RG353PS上で

LD_PRELOAD=/tmp/libjemalloc.so.2 ldd /tmp/yabasanshiro

で見ると、jemallocが使われそうな感じに見える。

とりあえずこれで実行してみたが、メモリリークっぽい現象は変わらなかった。残念。

起動してタイトル画面あたり。メモリ300MB?(メモリ使用率30%くらい)

root        3363  201 29.9 625348 299948 pts/0   Rl+  00:52   1:07
root        3363  202 30.0 629148 300548 pts/0   Rl+  00:52   1:10
root        3363  202 29.9 629148 300280 pts/0   Rl+  00:52   1:12
root        3363  203 29.9 629180 300376 pts/0   Rl+  00:52   1:14
root        3363  204 29.9 629180 300416 pts/0   Rl+  00:52   1:17

戦闘を何回か行ったとき。メモリ700MB?(メモリ使用率70%くらい)戦闘するごとに20Mくらい増えてそう。800MB超えるといつ殺されてもおかしくない感じになる。

OpenGLの何かを作りっぱなしなのではと思ったが、一応フリーはされてそう。

root        3363  222 66.0 1080976 662092 pts/0  Rl+  00:52   7:15
root        3363  222 66.1 1081588 662728 pts/0  Rl+  00:52   7:17
root        3363  222 67.7 1098036 678596 pts/0  Rl+  00:52   7:20
root        3363  222 68.4 1114484 685876 pts/0  Rl+  00:52   7:22
root        3363  222 69.3 1114612 694828 pts/0  Rl+  00:52   7:24
root        3363  222 69.3 1114996 694768 pts/0  Rl+  00:52   7:27
root        3363  222 69.3 1114996 694856 pts/0  Rl+  00:52   7:29
root        3363  222 69.3 1114996 694920 pts/0  Rl+  00:52   7:31
root        3363  222 69.3 1114996 695044 pts/0  Rl+  00:52   7:34
root        3363  222 69.3 1114996 694704 pts/0  Sl+  00:52   7:36
root        3363  222 69.3 1114996 694776 pts/0  Rl+  00:52   7:39
root        3363  222 69.6 1115252 697852 pts/0  Sl+  00:52   7:41

さて、どうするか。。。 →次回

0 件のコメント:

コメントを投稿