-
Notifications
You must be signed in to change notification settings - Fork 305
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
エンジンPIDの探索に失敗して起動できない #1360
Comments
ポートが塞がれていたときに別のポートを探索する部分ですね!
なるほどです、回避できるなら回避したいところですね・・・! |
このバグの根本的な原因は #1267 (comment) のやつだと思います。 どうやらElectronは自身にバンドルしているNode.JSを使用するようで、Electron 20.3.12内のv16.15が使われてしまいこのバグが発生してしまうようです。 それはそれとしてlsofの結果が空だと例外が発生するのでエラーハンドリングは必要のようです。 |
@madosuki さんありがとうございます!! なかなか奥が深いですね……。 空の時のエラーは、とりあえずwarnにログ出しつつfixmeコメント書くとかで良さそうですかねぇ。 |
https://releases.electronjs.org/ |
なるほどです! 23はwindows 8の切り捨てになるとのこと。まあ・・・良いかな! |
普通は起こらないと思いますがWindowsでも極端に大量(15000ポート程度で発生)のポートを使用している場合に |
不具合の内容
題のとおりです。
PIDの探索コマンドの実行に失敗しているみたいです。
voicevox/src/background/portManager.ts
Lines 124 to 126 in 9990a19
何回か試していると、
Error: spawnSync /bin/sh ENOBUFS
というエラーが発生しているみたいです。execFileSync
が適切にエラーハンドリングされていないために発生しているという点と、execFileSync
はバッファサイズに制限があるためにこのようなエラーが発生するようで、spwanSync
を利用することで回避できるようです。(そもそもプロセスIDしか返してこないはずがバッファオーバーフローしているのと、空文字列を返してきているはずなのにこのエラーが出ているという点において色々おかしいのですが...)https://stackoverflow.com/questions/63796633/spawnsync-bin-sh-enobufs
https://neos21.net/blog/2019/10/18-01.html#child_processspawnsync
ちなみに、どうやら単体でこのコマンドを実行し、プロセスが存在しなかった場合はエラーを返すようです。(左端にバツ印がついている)
再現手順
Windows以外(私はMacで発生しました、lsofの仕様が一緒であればlinuxでも発生するはず)で最新
main
ブランチにおいてnpm run electron:serve
する期待動作
問題なく起動する
VOICEVOXのバージョン
main
OSの種類/ディストリ/バージョン
The text was updated successfully, but these errors were encountered: