XSのABRTをキャッチしたい
このPerlコード実行するとSIGABRT発生するんだけど,これなんとかtrapできないのかな https://t.co/HeB6uvrl5z
— Lint it (@moznion) 2014, 8月 17
supervisord使ってても,アプリで使ってるXSライブラリがABRTを吐いたらアプリごと死んでついには生き返らないんですけどみなさんどうされてるんですか
— Lint it (@moznion) 2014, 8月 17
アイドルになればSIGABRTで悩むことも無かった
— Lint it (@moznion) 2014, 8月 17
頑張って美少女になるぞ!!!!!!!!!
— Lint it (@moznion) 2014, 8月 17
以下の様なコードを実行するとABRTしてアプリごと死ぬという厳しい状況にぶち当たりました.
(なおこのバグはfix issue #45 · 93ff36f · goccy/p5-Compiler-Lexer · GitHubにて修正されている様子.@goccy54さんには頭が上がりません.ありがとうございます)
$SIG{ABRT} = sub {...};
という具合で書いてやればABRTを握れるのかな〜とか思って書いてみたら,この方法ではシグナルをトラップできない感じだったので,やむなく以下の様にfork
を使ってなんとかすることにしました.
https://github.com/moznion/Perl-Lint-Playground/blob/5d9c23b59646dcc65fbb8d95e67368f6b02c3c01/lib/Perl/Lint/Playground/Service/Lint.pm
IO::Pipe便利!!!!!
さて皆さんこういう感じで,入力によってはXSがエラー吐いてどうにもならん時ってどうされてるんですかね?