Skip to content

エンジンPIDの探索に失敗して起動できない #1360

@y-chan

Description

@y-chan

不具合の内容

題のとおりです。
PIDの探索コマンドの実行に失敗しているみたいです。

const stdout = execFileSync(exec.cmd, exec.args, {
shell: true,
}).toString();

image

何回か試していると、Error: spawnSync /bin/sh ENOBUFSというエラーが発生しているみたいです。

image

execFileSyncが適切にエラーハンドリングされていないために発生しているという点と、execFileSyncはバッファサイズに制限があるためにこのようなエラーが発生するようで、spwanSyncを利用することで回避できるようです。(そもそもプロセスIDしか返してこないはずがバッファオーバーフローしているのと、空文字列を返してきているはずなのにこのエラーが出ているという点において色々おかしいのですが...)

https://stackoverflow.com/questions/63796633/spawnsync-bin-sh-enobufs
https://neos21.net/blog/2019/10/18-01.html#child_processspawnsync

ちなみに、どうやら単体でこのコマンドを実行し、プロセスが存在しなかった場合はエラーを返すようです。(左端にバツ印がついている)
image

再現手順

Windows以外(私はMacで発生しました、lsofの仕様が一緒であればlinuxでも発生するはず)で最新mainブランチにおいてnpm run electron:serveする

期待動作

問題なく起動する

VOICEVOXのバージョン

main

OSの種類/ディストリ/バージョン

  • Windows
  • macOS
  • Linux

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions