2025年3月20日木曜日

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

前回、とりあえずメモリリークっぽいというところまでは分かった。ただ、どこでメモリリークしているのかは分からない。

jemallocではプロファイルが取れるようなので取ってみようとした。

jemalloc prof

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

でビルドして、

MALLOC_CONF=prof:true

としてみたが、ファイルが取れなかった。リンクしてmalloc_stats_printは動いてそうだが、なぜかファイル出力されない。 

どうやらatexitで登録されている処理が動いてないようだ。YabDeInitとやらの処理の途中でおそらくabortしており、exitされていないという可能性がある。

とりあえず無理やりmenuから何かの操作をしたらexit(-1)するようにしたところファイルは出力された。

このファイルをみるためjeprofを動かさなければならないが、perlは入ってない。PCで動かそうにもarmのものなのでシンボルが読めなそう。textファイルなので直接読んでみる。

heap_v2/524288
  t*: 370: 661091 [0: 0]
  t0: 95: 43814 [0: 0]
  t1: 0: 0 [0: 0]
  t3: 255: 21950857 [0: 0]
  t4: 0: 0 [0: 0]
  t5: 0: 0 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x56712c 0x567620 0x4eef9c 0x4e1f64 0x513014 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 4194308 [0: 0]
  t0: 1: 4194308 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x4e1e54 0x5130b0 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 516101 [0: 0]
  t0: 1: 516101 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x7fadca9364 0x7fadc25e0c 0x7fadc9bf98 0x7fadc30c10 0x7fadc9bffc 0x7fadc90560 0x7fb5afd208 0x7fb59f37d0 0x7fb59ee404 0x476364 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 5121 [0: 0]
  t0: 1: 5121 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x512f78 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 516101 [0: 0]
  t0: 1: 516101 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x56d584 0x562eac 0x563e20 0x4f43e8 0x4e2540 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 1: 41128 [0: 0]
  t3: 1: 41128 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x56d584 0x562eac 0x56473c 0x4f74d8 0x4f7c0c 0x4fc844 0x4fd020 0x4e4b74 0x7fb54e0d34 0x7fb554c18c
  t*: 1: 448 [0: 0]
  t3: 1: 448 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x512f8c 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 1057519 [0: 0]
  t0: 1: 1057519 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x512fa4 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 1057519 [0: 0]
  t0: 1: 1057519 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x7faedbc9b0
  t*: 1: 661636 [0: 0]
  t0: 1: 661636 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x5598c0 0x5130a8 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 516101 [0: 0]
  t0: 1: 516101 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c97644 0x5792e4 0x512fec 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 4194308 [0: 0]
  t0: 1: 4194308 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fb5a70714 0x7fb5a71194 0x7fb59f05c8 0x7fb5a17e50 0x7fb59ee33c 0x7fb59ee550 0x476364 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 32 [0: 0]
  t0: 1: 32 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fb5a70714 0x7fb5a71194 0x7fb59f05c8 0x7fb5a1c894 0x7fb5ae796c 0x7fb59ee3b8 0x476364 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 32 [0: 0]
  t0: 1: 32 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fafdb0418
  t*: 1: 80 [0: 0]
  t0: 1: 80 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7faed40544
  t*: 1: 396057 [0: 0]
  t0: 1: 396057 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fafdb205c
  t*: 1: 265483 [0: 0]
  t0: 1: 265483 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fafd32870
  t*: 5: 15364 [0: 0]
  t0: 5: 15364 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fafd1ab74
  t*: 1: 512 [0: 0]
  t0: 1: 512 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7faecac574
  t*: 1: 661636 [0: 0]
  t0: 1: 661636 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7faedd277c
  t*: 1: 8 [0: 0]
  t0: 1: 8 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7faed41198
  t*: 2: 164677 [0: 0]
  t0: 2: 164677 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7faed42da4
  t*: 1: 330638 [0: 0]
  t0: 1: 330638 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fafd33ca8
  t*: 2: 11954 [0: 0]
  t0: 2: 11954 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x5673bc 0x4eef9c 0x4e1f64 0x513014 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 97907 [0: 0]
  t0: 1: 97907 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x53b5c4 0x55f0b0 0x4ca080 0x47b178 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 8192 [0: 0]
  t0: 1: 8192 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fb596d0cc 0x7fb5c37d4c 0x7fb5988620 0x7fb59891f8 0x7fb598bde8 0x7fb5985dfc 0x7fb59860f0 0x47b688 0x4769e0 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 65611 [0: 0]
  t0: 1: 65611 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fb596d0cc 0x7fb5c37d64 0x7fb5988620 0x7fb59891f8 0x7fb598bde8 0x7fb5985dfc 0x7fb59860f0 0x47b688 0x4769e0 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 65611 [0: 0]
  t0: 1: 65611 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7fb596d0cc 0x7fb5c37da0 0x7fb5988620 0x7fb59891f8 0x7fb598bde8 0x7fb5985dfc 0x7fb59860f0 0x47b688 0x4769e0 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 65611 [0: 0]
  t0: 1: 65611 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x5673d0 0x4eef9c 0x4e1f64 0x513014 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 2: 388000 [0: 0]
  t0: 2: 388000 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x51a5e0 0x52b1e4 0x5309fc 0x53d42c 0x627dc0 0x4add8c 0x4764fc 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 4194308 [0: 0]
  t0: 1: 4194308 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x5673e4 0x4eef9c 0x4e1f64 0x513014 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 2: 388000 [0: 0]
  t0: 2: 388000 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5c95628 0x7faedbd3e4
  t*: 1: 225995 [0: 0]
  t0: 1: 225995 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5d09f54 0x7fb5d0a0c8 0x7faed3b6c4
  t*: 2: 164677 [0: 0]
  t0: 1: 82338 [0: 0]
  t3: 1: 82338 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c93b80 0x7fb5d09f54 0x7fb5d0a0c8 0x54bde8 0x54a7c8 0x4d53fc 0x513180 0x47b148 0x47652c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 12582912 [0: 0]
  t0: 1: 12582912 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c9418c 0x7fb5c95628 0x7fb57a4944 0x7fb5f699b4 0x7fb5f80f78
  t*: 1: 82338 [0: 0]
  t0: 1: 82338 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c9ec90 0x617e38 0x542768 0x4afa34 0x618ce8 0x476b7c 0x7fb5481fcc 0x7fb54820a8 0x47ab70
  t*: 1: 65611 [0: 0]
  t0: 1: 65611 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x563e20 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 5: 1039333 [0: 0]
  t3: 5: 1039333 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x563e20 0x4f55a0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 4: 531792 [0: 0]
  t3: 4: 531792 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x563e20 0x4f16b4 0x4e2508 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 2: 227959 [0: 0]
  t3: 2: 227959 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x563e20 0x4f50e0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 6: 683878 [0: 0]
  t3: 6: 683878 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x563e20 0x4f43e8 0x4e2540 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 3: 341939 [0: 0]
  t3: 3: 341939 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x563e20 0x4f45f4 0x4e2524 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 1: 113980 [0: 0]
  t3: 1: 113980 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x564b64 0x565260 0x4fc4d0 0x4fd020 0x4e4b74 0x7fb54e0d34 0x7fb554c18c
  t*: 1: 113980 [0: 0]
  t3: 1: 113980 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x5633a8 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 19: 4814936 [0: 0]
  t3: 19: 4814936 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fa8 0x5633a8 0x4f50e0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 2: 451990 [0: 0]
  t3: 2: 451990 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x563e20 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 5: 1970845 [0: 0]
  t3: 5: 1970845 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x563e20 0x4f55a0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 4: 1076334 [0: 0]
  t3: 4: 1076334 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x563e20 0x4f16b4 0x4e2508 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 2: 451990 [0: 0]
  t3: 2: 451990 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x563e20 0x4f50e0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 15: 3389928 [0: 0]
  t3: 15: 3389928 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x563e20 0x4f43e8 0x4e2540 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 3: 677986 [0: 0]
  t3: 3: 677986 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x563e20 0x4f45f4 0x4e2524 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 3: 677986 [0: 0]
  t3: 3: 677986 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x5633a8 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 36: 19556783 [0: 0]
  t3: 36: 19556783 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x5633a8 0x4f16b4 0x4e2508 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 1: 225995 [0: 0]
  t3: 1: 225995 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x5633a8 0x4f50e0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 4: 1811755 [0: 0]
  t3: 4: 1811755 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x563e20 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 5: 2454642 [0: 0]
  t3: 5: 2454642 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x563e20 0x4f55a0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 4: 1076334 [0: 0]
  t3: 4: 1076334 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x563e20 0x4f16b4 0x4e2508 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 6: 1355971 [0: 0]
  t3: 6: 1355971 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x563e20 0x4f50e0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 21: 4745899 [0: 0]
  t3: 21: 4745899 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x563e20 0x4f43e8 0x4e2540 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 2: 451990 [0: 0]
  t3: 2: 451990 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x563e20 0x4f45f4 0x4e2524 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 3: 677986 [0: 0]
  t3: 3: 677986 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x56473c 0x4f74d8 0x4f7c0c 0x4fc844 0x4fd020 0x4e4b74 0x7fb54e0d34 0x7fb554c18c
  t*: 2: 451990 [0: 0]
  t3: 2: 451990 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x5633a8 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 34: 17685727 [0: 0]
  t3: 34: 17685727 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x5633a8 0x4f50e0 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 4: 1522884 [0: 0]
  t3: 4: 1522884 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x5652f4 0x4f5748 0x4fbe98 0x4fd020 0x4e4b74 0x7fb54e0d34 0x7fb554c18c
  t*: 1: 225995 [0: 0]
  t3: 1: 225995 [0: 0]

 t何とかで出ているのはおそらくメモリサイズだろう。とりあえず多そうなのは、以下。

@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fc0 0x5633a8 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 36: 19556783 [0: 0]
  t3: 36: 19556783 [0: 0]
@ 0x7fb5cfaa70 0x7fb5cfb2f8 0x7fb5cedcf4 0x7fb5c90ee4 0x7fb5c9e820 0x562fd8 0x5633a8 0x4f5414 0x4e24d0 0x4e4b50 0x7fb54e0d34 0x7fb554c18c
  t*: 34: 17685727 [0: 0]
  t3: 34: 17685727 [0: 0]

16進数はおそらくプログラムの位置だろう。addr2lineで見てみる。

aarch64-rocknix-linux-gnueabi-addr2line -e src/retro_arena/yabasanshiroYglGetProgram -f
yabause/src/ygles.c:2170
YglTriangleGrowShading_in
yabause/src/ygles.c:2290
VIDOGLVdp1DistortedSpriteDraw
yabause/src/vidogl.c:5384
Vdp1DrawCommands
yabause/src/vdp1.cpp:547
VdpProc
yabause/src/vdp2.cpp:1204

YglGetProgram
yabause/src/ygles.c:2171 (discriminator 1)
YglTriangleGrowShading_in
yabause/src/ygles.c:2290
VIDOGLVdp1DistortedSpriteDraw
yabause/src/vidogl.c:5384
Vdp1DrawCommands
yabause/src/vdp1.cpp:547
vdp2VBlankOUT
yabause/src/vdp2.cpp:1204

ygles.c:2170は以下のあたり

   if ((program->currentQuad + YGL_MAX_NEED_BUFFER) >= program->maxQuad) {
     program->maxQuad += YGL_MAX_NEED_BUFFER*32;
    program->quads = (float *)realloc(program->quads, program->maxQuad * sizeof(float));
      program->textcoords = (float *) realloc(program->textcoords, program->maxQuad * sizeof(float) * 2);
      program->vertexAttribute = (float *) realloc(program->vertexAttribute, program->maxQuad * sizeof(float)*2);
    YglCacheReset(_Ygl->texture_manager);
   }

currentQuadが増えたらメモリを取り直している。なにかで増えたら増えていく模様。

なんとなく原因は分かったが、どうやって直せばいいのか?どういう作りなのか理解しないと直せなそう。 

とりあえずここまで。 

追記:

上記を無理やり開放するようにして動かしてもメモリが増える現象は変わらなかった。currentQuadは毎回0にされており、無限に増えていくわけではなさそう。どうやらテクスチャの最大必要なところまで拡大する処理のように見える。

ピークを引きずっているわけなので、いつまでもそれだけ確保し続けるのもちょっと困りものだが、とりあえず今回の原因ではなさそう。ここ以外でメモリ消費で大きいものを探すと以下だった。

@ 0x7f9b7faa70 0x7f9b7fb2f8 0x7f9b7edcf4 0x7f9b793b80 0x7f9b809f54 0x7f9b80a0c8 0x54be08 0x54a7e8 0x4d53fc 0x5131a0 0x47b148 0x47652c 0x7f9af81fcc 0x7f9af820a8 0x47ab70
  t*: 1: 12582912 [0: 0]
  t0: 1: 12582912 [0: 0] 

で、以下

_ZNSt10_HashtableIjSt4pairIKjiESaIS2_ENSt8__detail10_Select1stESt8equal_toIjESt4hashIjENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEEC4Ev
toolchain/aarch64-rocknix-linux-gnueabi/include/c++/14.2.0/bits/hashtable.h:539 (discriminator 2)
_ZN10DynarecSh210SetContextEP10SH2_struct
yabause/src/sh2_dynarec_devmiyax/DynarecSh2.h:320
SH2Reset
yabause/src/sh2core.c:180 (discriminator 1)
YabauseStopSlave
yabause/src/yabause.c:966
_Z11yabauseinitv
yabause/src/retro_arena/main.cpp:272
main
yabause/src/retro_arena/main.cpp:440 (discriminator 1)

ダイナミックリコンパイルのあたり?っぽい。OpenGL関係でリークしているのかと思って探し回っていたが予想外。

うーん。 確保されてても解放されてて問題ないのだろうか。t0とかの意味が分からない。

解決→

0 件のコメント:

コメントを投稿