ptarmigan
ptarmigan copied to clipboard
not starts on RasPi 3
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.
- 64GBのmicroSDカードにimageファイルを焼いて、Raspberry Pi3で動かす→NG
- Raspberry Pi3で動かなかったmicroSDをそのままRaspberry Pi ZeroWに挿して動かす→OK
microSDカードは同じで違いがあったので、Raspberry Piに何か違いがあるのだろうか。
現状の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()
と同じになるのかと思ったが、そうでもないのだろうか?
calloc()
ではなくmmap()
のほうだった。
open後にmapsizeを設定すれば済みそうな気がしたが、ドキュメントではopen前に呼ぶよう指示されているので、そうした方がよいだろう。 http://www.lmdb.tech/doc/group__mdb.html#gaa2506ec8dab3d969b0e609cd82e619e5
また、openに失敗した場合、失敗したという情報がenvに残ってしまうようだ。 つまり、一度memory不足で失敗したのでサイズを変えてやり直しても、そのままではまたエラーになるのだ。 そのため、closeしてcreateからやり直すしかなさそうだ。