haskell-jp / random #90 at 2021-04-22 14:34:09 +0900
Back to random #90
kazu
2021-04-22 14:34:09 +0900
どうも buffer overrun を起こして、GCのデータを壊しているっぽい。
takenobu.hs
2021-04-22 21:59:20 +0900
私は使ったことがないのですが、GC時の不整合であれば、sanityチェックオプション(-DS)でチェックできるという話を聞いたことがあります。
https://gitlab.haskell.org/ghc/ghc/-/wikis/debugging/runtime-system#debugging-the-runtime-system
https://gitlab.haskell.org/ghc/ghc/-/wikis/commentary/rts/sanity#sanity-checking
kazu
2021-04-27 15:16:16 +0900
@takenobu.hs ありがとうございます。
kazu
2021-04-27 15:17:07 +0900
gdb の中で -DS で走らせてみました。
spec: internal error: ASSERTION FAILED: file rts/sm/Sanity.c, line 740
とか
spec: internal error: ASSERTION FAILED: file rts/sm/Scav.c, line 1606
とか言われます。
やはり、buffer overrun を疑っています。
kazu
2021-04-30 11:02:40 +0900
@takenobu.hs
memset
が buffer overrun している箇所を発見し、めでたく修正できました。間違っていた箇所はテストコードで CI は確率的に失敗するが、フィールドテストしているサーバーでは問題が起きない点がやっかいでした。
Back to random #90