Skip to content
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

npm run fmtnpm run test:browser-e2eがセグフォエラーになる #2379

Open
1 of 3 tasks
Hiroshiba opened this issue Nov 25, 2024 · 7 comments
Open
1 of 3 tasks

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Nov 25, 2024

不具合の内容

npm run fmtが動かなくなっていそうです。
おそらく原因は日本語文字列が含まれたファイル名のtsファイルやmtsファイルです。

とりあえず応急処置としてはpackage.jsonfmtのコマンドの中にあるtestsを省けば通りそうです。
あるいは vscode のフォーマットフォーマットしてくれるプラグイン(pritterとか)を使えば迂回できるかもです。

eslintのバージョンを8.5.1にアップデートしても解決しませんでした。
他にeslintのバージョン9が出ていますが、こちらは依存関係でいろんなものをアップデートしないと入らなさそうでした。

現象・ログ

ログ
npm: line 65: 880 Segmentation fault "$NODE_EXE" "$NPM_CLI_JS" "$@"

再現手順

npm run fmtする

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

  • Windows
  • macOS
  • Linux

その他

開発環境の問題なので、優先度は高めだと思います。

@Hiroshiba Hiroshiba changed the title npm run fmtがセグフォエラーになる npm run fmtnpm run test:browser-e2eがセグフォエラーになる Dec 8, 2024
@Hiroshiba
Copy link
Member Author

Hiroshiba commented Dec 8, 2024

このエラーですが、なんかnodeのv22だったら起こるようでした。
node v23で試してもダメでした。

似たような症状が報告されていないのは不思議ですが、node 22でSegmenatation falutになる報告はちょこちょこありました。
↓ tscの例

よく分かりませんが、↑のコメントに書いてある通りnode v20まで落としたら動きました。

ちょっとローカルでテスト動かせないので、もしこのバグが発生していない方がいらっしゃったらかなり聞きたいです。

npm run test:browser-e2e -- --list

が動けばOKだと思います。
例えばWSLなら動くとかありそう。(Github workflowは普通に動いてるっぽいので)

あるいはなんかASCII処理周りな気がするので(?)、ファイル名を全部日本語じゃなくすれば行けそうなのですが・・・。
最終手段はそれかもです。

P.S.
Git bashが原因かなと思ってpowershellでやってみたけどダメでした。

@raa0121
Copy link
Contributor

raa0121 commented Dec 19, 2024

eslint に --debug をつけると、以下のログで止まりました。
これより前に、日本語ファイル名のテストも fix が通ってました。

  eslint:file-enumerator Yield: アクセント.spec.ts +0ms
  eslintrc:cascading-config-array-factory Load config files for C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser. +43ms
  eslintrc:cascading-config-array-factory Cache hit: C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser. +0ms
  eslint:cli-engine Lint C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser\アクセント.spec.ts +44ms
  eslint:linter Linting code for C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser\アクセント.spec.ts (pass 1) +2ms
  eslint:linter Verify +0ms
  eslint:linter With ConfigArray: C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser\アクセント.spec.ts +0ms
  eslint:linter Parsing: C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser\アクセント.spec.ts +1ms
  eslint:linter Parsing successful: C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser\アクセント.spec.ts +2ms
  eslint:linter Scope analysis: C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser\アクセント.spec.ts +0ms
  eslint:linter Scope analysis successful: C:\msys64\home\raa0121\develop\voicevox\tests\e2e\browser\アクセント.spec.ts +0ms

@Hiroshiba
Copy link
Member Author

あれ、なるほどです!! 完全に日本語文字がダメなんだと思ってました!!!!!

アクセント.spec.tsが原因なのかな・・・それともこれの次・・・?

@raa0121
Copy link
Contributor

raa0121 commented Dec 20, 2024

アクセント.spec.ts をリネームして accent.spec.ts にしたところ、次の アップデート通知ダイアログ.spec.ts がコケました
雰囲気ですが、カタカナの「ア」が引っかかってる気がします。

@Hiroshiba
Copy link
Member Author

なるほどです! 少なくともエラーになってしまう日本語文字列はありそうですね・・・。
僕たち側で回避しようとしたら日本語ファイルを避けることになるのかなぁ・・・。

ちょっと大変なのですが、再現可能な最小限の例(Minimal Reproducible Example)を作ってeslint側に報告するのがみんな幸せになりそうな予感はあるんですよね・・・。

@yamachu
Copy link
Member

yamachu commented Jan 19, 2025

こちらのIssueなどを見て調査を進めた結果、実行環境の文字コード周りとNode.jsのランタイムの問題であることが発覚したためご報告します…
nodejs/node#56650

ファイル名を変更せずに実施できるWorkaroundとしては
#2216 (comment)
こちらのコメントにもあるように、システムのロケールを変更することですね…

chcpをnpmコマンド実行前に挟んでみたのですが、それだとダメみたいでした

$ chcp 65001; npm run fmt

@Hiroshiba
Copy link
Member Author

ありがとうございます!!!!!!!!!
いったんnode側のissueをお待ちする感じが良いのかなと思いました!!!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants