Tomo-9925 / cnet

Controlling and logging communication of process in Docker container
2 stars 0 forks source link

signal受信後の処理が実行されないことがある #16

Open Tomo-9925 opened 3 years ago

Tomo-9925 commented 3 years ago

動作検証中に何度かSIGINTでプログラムを終了させようとしたのですが,何度か止まることがありました.当時のログは次のとおりです.

problem.log

deferの関数のどこかかdeinitのどこかで止まっています…

Tomo-9925 commented 3 years ago

このバグを報告してから特に発生していないので,閉じます.

masibw commented 3 years ago

またであったのでopenします・・

masibw commented 3 years ago

まだちゃんと読んでないのですがこれっぽいです https://otiai10.hatenablog.com/entry/2018/02/19/165228

masibw commented 3 years ago

なんか今気付いたんですけど、パケットを通すだけの時はちゃんとdeinitできてパケットをdropするとdeinitが呼ばれないですね 具体的にはdropするパケットが継続的にきている状態でやるとlogrus.Exit(0)が終わらないですね じゃあチャンネルを全部closeすれば良いのでは?って思ったんですが、packets(read-only)チャンネルはcloseできないってエラー吐かれてうーーんになっています

masibw commented 3 years ago

queue.Close()で解決するかと思ったらしませんでした:cry: