Bitcoin: NetBSDでマスターを実行しているSegfault

作成日 2019年11月05日  ·  3コメント  ·  ソース: bitcoin/bitcoin

17270をテストしているときに、マスター(bdda137878904e9401a84e308ac74c93c2ef87c1)がNetBSDで実行されていないことに気づきました。 これは、#17085がフォールバックロケールをCからC.UTF-8変更した後に開始されたと思います。 NetBSDにはC.UTF-8ロケールがないようです。

src/bitcoind
terminate called after throwing an instance of 'std::runtime_error'
  what():  locale::facet::_S_create_c_locale name not valid
Abort trap (core dumped)

LC_ALL=C src/bitcoind機能しますが、 LC_ALL=en_US.UTF-8 src/bitcoindは機能しません。

locale
LANG=""
LC_CTYPE="en_US.UTF-8"
LC_COLLATE="C"
LC_TIME="C"
LC_NUMERIC="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_ALL=""
LinuUnix

最も参考になるコメント

私はそれらを置き換えるためにすべてですが、間違ったロケールを構成してもこれらの関数がクラッシュすることはありません。これは非常に後押しです。

全てのコメント3件

これは永遠の問題の原因です。 ある時点ですべてのロケール依存関係を取り除き、ロケールを無視できるかどうか疑問に思います。 おそらくboost::filesystemを使用している限りではないでしょう…:cry:

@laanwj

boost::filesystem別にして、ロケールに依存する操作を使用している場所のリストは非常に短いです。

https://github.com/bitcoin/bitcoin/blob/e204dc11b562c2cf31d320774a4dcbe49f3b6468/test/lint/lint-locale-dependence.sh#L5 -L20

おそらく、上記のリストに取り組むために「良い最初の問題」を作成することができますか? それらのいくつかは、新しい貢献者に適した本当に低いぶら下がっている果物です。

私はそれらを置き換えるためにすべてですが、間違ったロケールを構成してもこれらの関数がクラッシュすることはありません。これは非常に後押しです。

このページは役に立ちましたか?
0 / 5 - 0 評価