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

CI is failing (rust-unit-test) #859

Open
1 of 3 tasks
qryxip opened this issue Oct 20, 2024 · 6 comments · May be fixed by #876
Open
1 of 3 tasks

CI is failing (rust-unit-test) #859

qryxip opened this issue Oct 20, 2024 · 6 comments · May be fixed by #876
Labels

Comments

@qryxip
Copy link
Member

qryxip commented Oct 20, 2024

不具合の内容

test workflowrust-unit-testが以下のメッセージと共に落ちています。

[voicevox-ort-sys 2.0.0-rc.4] `VERSION_NUMBER`を読めませんでした: The system cannot find the file specified. (os error 2)

https://github.com/VOICEVOX/ort/blob/8627833456a69e7841ae2a29fd184752df8de8d9/ort-sys/build.rs#L445

つまり以下に示すonnxruntime-win-x64-1.17.3.tgzの内容物の中からVERSION_NUMBERを見つけられないか、あるいはこのディレクトリ(=lib_dir)ごと見失っているか、tgzの解凍とかが変ということになります。

onnxruntime-win-x64-1.17.3
├── GIT_COMMIT_ID
├── lib
│   ├── onnxruntime.dll
│   └── onnxruntime.lib
├── LICENSE
├── Privacy.md
├── README.md
├── ThirdPartyNotices.txt
└── VERSION_NUMBER

最近までのmainブランチや #854 ではrust-cacheがまだ効いていた/いるためrust-unit-testの失敗はまだ発生してません。以下が今わかっていることです。

  1. rust-cacheやactions/cacheに起因する問題ではない
  2. rust-lintbuild_and_deploy系ではこの問題が発生しておらず、普通に成功している
  3. ortが"cache_dir"を定める箇所が怪しそうではあるが、ここが要因であるならば2.の説明がつかない
  4. onnxruntime-win-x64-1.17.3.tgzにはVERSION_NUMBERはちゃんと入っている
  5. 私の手元のWindows機で再現できない

ちょっと調査が必要そうであるため、取り急ぎmainブランチのCIが落ちていることの連絡としてissue化だけしておく次第です。
(CC: @Hiroshiba)

現象・ログ

再現手順

期待動作

VOICEVOXのバージョン

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

  • Windows
  • macOS
  • Linux

その他

@qryxip
Copy link
Member Author

qryxip commented Oct 21, 2024

なんか今動かしたら問題が起きないようなので、この怪奇現象については調査すら不可能になったということでcloseします… 一体なんだったんだ。

@qryxip qryxip closed this as not planned Won't fix, can't repro, duplicate, stale Oct 21, 2024
@qryxip
Copy link
Member Author

qryxip commented Oct 23, 2024

なんか再発した!!mainブランチじゃないし私のフォークリポジトリだけど!!
https://github.com/qryxip/voicevox_core/actions/runs/11484213284/job/31961443767

@qryxip qryxip reopened this Oct 23, 2024
@qryxip
Copy link
Member Author

qryxip commented Nov 14, 2024

これなんとかしないと駄目ですね。依存ライブラリ追加したりworkflow編集したりしてrust-cacheが切れたら通らなくなる。

とりあえず今わかっていることとしては、まずVOICEVOX/onnxruntime-builderのonnxruntime-win-x64-1.17.3.tgz (SHA256: EB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8)にはVERSION_NUMBERがちゃんと入っている。

sha256sum ~/Downloads/onnxruntime-win-x64-1.17.3.tgz | teip -f 1 tr a-z A-Z
EB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8  /home/ryo/Downloads/onnxruntime-win-x64-1.17.3.tgztar tvf ~/Downloads/onnxruntime-win-x64-1.17.3.tgz
drwxr-xr-x runneradmin/197121 0 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/
-rw-r--r-- runneradmin/197121 41 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/GIT_COMMIT_ID
drwxr-xr-x runneradmin/197121  0 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/lib/
-rwxr-xr-x runneradmin/197121 12141056 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/lib/onnxruntime.dll
-rw-r--r-- runneradmin/197121     2124 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/lib/onnxruntime.lib
-rw-r--r-- runneradmin/197121     1094 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/LICENSE
-rw-r--r-- runneradmin/197121     2490 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/Privacy.md
-rw-r--r-- runneradmin/197121     6676 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/README.md
-rw-r--r-- runneradmin/197121   345046 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/ThirdPartyNotices.txt
-rw-r--r-- runneradmin/197121        8 2024-05-02 16:01 onnxruntime-win-x64-1.17.3/VERSION_NUMBER

それでort-sysの中でprintデバッグしたところ、ちゃんとEB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8のonnxruntime-win-x64-1.17.3.tgzを取って来てる、のにも関わらず中身にVERSION_NUMBERが無い。このissueのdescriptionにも書いた通り、手元ではそんなことは起きていない。謎。

[追記] C:\Users\runneradmin\AppData\Local\voicevox_ortが何らかの形でキャッシュされているというわけでもなさそう。

  [C:\Users\runneradmin\.cargo\git\checkouts\ort-2994e366294b351c\062896c\ort-sys\build.rs:445:4] &lib_dir = "C:\\Users\\runneradmin\\AppData\\Local\\voicevox_ort\\dfbin\\x86_64-pc-windows-msvc\\EB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8\\onnxruntime-win-x64-1.17.3"
  [C:\Users\runneradmin\.cargo\git\checkouts\ort-2994e366294b351c\062896c\ort-sys\build.rs:446:17] lib_dir.read_dir() = Ok(
      ReadDir(
          "C:\\Users\\runneradmin\\AppData\\Local\\voicevox_ort\\dfbin\\x86_64-pc-windows-msvc\\EB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8\\onnxruntime-win-x64-1.17.3",
      ),
  )
  [C:\Users\runneradmin\.cargo\git\checkouts\ort-2994e366294b351c\062896c\ort-sys\build.rs:447:13] entry.unwrap() = DirEntry(
      "C:\\Users\\runneradmin\\AppData\\Local\\voicevox_ort\\dfbin\\x86_64-pc-windows-msvc\\EB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8\\onnxruntime-win-x64-1.17.3\\GIT_COMMIT_ID",
  )
  [C:\Users\runneradmin\.cargo\git\checkouts\ort-2994e366294b351c\062896c\ort-sys\build.rs:447:13] entry.unwrap() = DirEntry(
      "C:\\Users\\runneradmin\\AppData\\Local\\voicevox_ort\\dfbin\\x86_64-pc-windows-msvc\\EB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8\\onnxruntime-win-x64-1.17.3\\lib",
  )
  thread 'main' panicked at C:\Users\runneradmin\.cargo\git\checkouts\ort-2994e366294b351c\062896c\ort-sys\build.rs:449:103:
  `VERSION_NUMBER`を読めませんでした: The system cannot find the file specified. (os error 2)

@Hiroshiba
Copy link
Member

Hiroshiba commented Nov 15, 2024

これ厄介ですね・・・。

問題は展開にあるとか・・・?

降ってきてるファイルが正しいなら、ort内のextract_tgzをリトライすれば解決するのかもと思いました。
あるいはtar::Archive側で似た報告があればありがたいかもですが、探しにくそうですね・・・。

パッと思いついたのは、archive.unpackが実は非同期処理で、まだVERSION_NUMBERファイルの展開ができてないとかでしょうか。
あるいはGithub Worlkflowの仮想環境の都合で、ファイル書き込みが完了してから読み込めるようになるまで一瞬の時間差があるとか・・・?

(とりあえず思いついた仮説を書いてみました。)

@qryxip
Copy link
Member Author

qryxip commented Nov 21, 2024

更にdbg!を挟んだところ、なんかlib_dir.exists()らしく、ダウンロード&展開が行なわれていない…?

[C:\Users\runneradmin\.cargo\git\checkouts\ort-2994e366294b351c\9aad06e\ort-sys\build.rs:430:4] &lib_dir = "C:\\Users\\runneradmin\\AppData\\Local\\voicevox_ort\\dfbin\\x86_64-pc-windows-msvc\\EB40E58F3BA0BA8D256847429B4511CDAE4C81805891C94F0C58220E3E17CDA8\\onnxruntime-win-x64-1.17.3"
[C:\Users\runneradmin\.cargo\git\checkouts\ort-2994e366294b351c\9aad06e\ort-sys\build.rs:431:8] lib_dir.exists() = true

そしてログ全体を"voicevox-ort-sys"でCtrl-fしたところ、次の異なるクレート名(?)(正式な呼び方があったはずだが忘れた)を発見。

  • voicevox-ort-sys-599f84d8db9f760d
  • voicevox-ort-sys-b1840084e9151301

ort-sysのTGZ展開はどうも自分が二種類以上存在して並列実行されることは想定していないらしく、ロックも掛けたりしない… ということで、これが要因なら「たまに謎に収まって普通に通ったりする」ということも説明が付く。

@qryxip
Copy link
Member Author

qryxip commented Nov 23, 2024

とりあえずpykeio/ort側にissueだけ立てました。
pykeio/ort#322

qryxip added a commit to VOICEVOX/ort that referenced this issue Nov 25, 2024
Fixes the problem where building multiple ort-sys `download-binaries`
fail.

Cherry picked from eb51646, eb51646, and pykeio#323.

Refs: VOICEVOX/voicevox_core#859, pykeio#322
Refs: eb51646
Refs: effd7a7, pykeio#323
Co-authored-by: Carson M. <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants