nayutaco / ptarmigan

Lightning Network (BOLT)
Apache License 2.0
132 stars 19 forks source link

not starts on RasPi 3 #1580

Open char1yxok opened 5 years ago

char1yxok commented 5 years ago

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.

nayuta-ueno commented 5 years ago

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

nayuta-ueno commented 5 years ago

現状のmapsizeは0x8000_0000。

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

nayuta-ueno commented 5 years ago

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

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

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