-
Notifications
You must be signed in to change notification settings - Fork 309
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
エンジンプロセスの停止をtreeKillではなく通常のkillにしたい #2167
Comments
次のようにコードを修正してWindowsで試してみました。 voicevox/src/backend/electron/manager/engineManager.ts Lines 444 to 449 in 1f39897
- treeKill(enginePid, (error) => {
- if (error != undefined) {
- log.error(`ENGINE ${engineId}: Error during killing process`);
- reject(error);
- }
- });
+ const result = engineProcess.kill("SIGINT");
+ if (!result) reject("err"); Windows環境、VOICEVOX Engineの場合は子プロセスまで終了できていると思います。 エンジンの方に Nodeのドキュメントの記述で子プロセスがキルできるかよく分からないのですよね…
エンジンは恐らく強制終了。 |
@sabonerune おお!! 検証ありがとうございます!!!!
なるほどです!!
ああああすみません。。。。。killシグナルを選べない可能性を考えていませんでした。。。。
わからないですね・・・。Windowsだから・・・?あるいはpyinstallerくんがよしなにやってくれてるのかも。 なんにせよエンジン側をgracefulに終了できないならこのissueの提案は叶えられなそうです。。。 検証ほんとにありがとうございます!!! |
内容
エンジンの停止はtreeKillを使っていて、windowsはどうしても強制終了するコードになっています。
これではエンジン側のgracefulシャットダウンができないので、通常のkill(SIGTERM送信的なの)にしたいです。
ただNodeのprocess.killは子プロセスをキルしないので、エンジン側が子孫をちゃんとkillするように作ってないと、ゾンビプロセス的な感じで残ってしまうかもしれません。
今のVOICEVOXエンジンにNodeでprocess.killしてみて(treeKillの部分を普通にprocess.killに変えれば良さそう)、ちゃんと消えてくれてそうならkillに置き換えたいです。
Pros 良くなる点
エンジン側が強制終了されなくなる
Cons 悪くなる点
確かめが必要
実現方法
VOICEVOXのバージョン
0..19.2
その他
可能ならいろんなOSで大丈夫か確認したいところですが、windowsで確認できればいったんOKな気がします。
(ビルド後にいろんなOSでチェックは必要)
VOICEVOXエンジン側でgracefulな処理をしたい部分があるので、実験結果をお待ちしています!
The text was updated successfully, but these errors were encountered: