ptarmigan icon indicating copy to clipboard operation
ptarmigan copied to clipboard

not starts on RasPi 3

Open char1yxok opened this issue 5 years ago • 3 comments

Ptarmd doesn't work on Raspberry Pi 3 Model B.

(Notes) After changed "M_ANNO_MAPSIZE" in "ln_db_lmdb.c" to '1147483648', it seemed to work without problem.

char1yxok avatar Jul 23 '19 07:07 char1yxok

  • 64GBのmicroSDカードにimageファイルを焼いて、Raspberry Pi3で動かす→NG
  • Raspberry Pi3で動かなかったmicroSDをそのままRaspberry Pi ZeroWに挿して動かす→OK

microSDカードは同じで違いがあったので、Raspberry Piに何か違いがあるのだろうか。

nayuta-ueno avatar Sep 26 '19 09:09 nayuta-ueno

現状のmapsizeは0x8000_0000。

  • PiZeroはmdb_env_set_mapsize()でも``でもSUCCESS
  • Pi3はmdb_env_set_mapsize()はSUCCESS、mdb_env_open()で"Cannot allocate memory"

malloc()で見極めようとしたが、そうするとPiZeroはPi3よりも少ないRAMでallocateできなくなった。LMDBの実装を見ると、まだopenしていない場合はmdb_env_set_mapsize()しても設定のみの変更だった。 calloc()しているだけのように見えるので、malloc()と同じになるのかと思ったが、そうでもないのだろうか?

nayuta-ueno avatar Oct 01 '19 03:10 nayuta-ueno

calloc()ではなくmmap()のほうだった。

open後にmapsizeを設定すれば済みそうな気がしたが、ドキュメントではopen前に呼ぶよう指示されているので、そうした方がよいだろう。 http://www.lmdb.tech/doc/group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5

また、openに失敗した場合、失敗したという情報がenvに残ってしまうようだ。 つまり、一度memory不足で失敗したのでサイズを変えてやり直しても、そのままではまたエラーになるのだ。 そのため、closeしてcreateからやり直すしかなさそうだ。

nayuta-ueno avatar Oct 01 '19 08:10 nayuta-ueno