🧊

Rustで原因不明のstack overflowに遭遇したら、`debug = false`を試す

あらすじは、

  • とあるcrateがあった
  • 今日までそれを使っている別の環境では、問題なく動いてた
  • なのに、新しい環境では、同じコードなのにエラーになる
  • stack overflowと言われても心当たりがない

いったいなぜ・・・?という。

Profile: debug

再帰処理は確かにしていたので、そこに原因があると思っていろいろ変えてみたが、効果がなかった。

というか、そもそも環境起因というところが納得いかない。

あれやこれやと差分を調べまくった結果、たどり着いたのがこの差。

[profile.dev]
debug = false

そして案の定、これを指定したらあっさり動くようになった・・・。

Profiles - The Cargo Book https://doc.rust-lang.org/cargo/reference/profiles.html#debug

普段より大量のスタックフレームを記録しようとして、溢れるって感じか。デバッグ情報も使ったことないけど。