-
Notifications
You must be signed in to change notification settings - Fork 12
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
dllアンロード後"char.bin"のロックが残る件について #17
Comments
ご報告ありがとうございます! Discordでのやり取りの後、この件についてもう少し調べてみたのですが、自分の当初の予想とは異なる考えになりました。結論から言うと、問題は open_jtalk-rs の実装にはなく voicevox_core の方の問題のようでした。かつ、voicevox_coreの main ブランチではライブラリの設計変更に伴ってこの問題がすでに解決されている可能性が高そうでした。 問題が解決したバージョンのリリースにはまだ少し時間がかかると思います(次回リリースのバージョン 0.15 はハミング機能(project-s)の成果の投入が優先されています)。その後のバージョン 0.16 では解決しているのではないかと思います。 混乱させてしまっていたらすみません。以下でもう少し詳しく説明します。 Q. デストラクタで
|
本文の方有難うございます。できれば0.14.5でロック解除できるとありがたいのですが。余談の方にコメントすると |
0.14 系は、0.15 が近日リリースされるためサポート対象外となると思います。一方、上述したように 0.15 でも問題は解決されていませんが、API の変更は(非公開 API が追加された以外は)ないと思うので、早期の修正が必要であれば 0.15 系で修正し、こちらをお使いいただくのが良いと思います(恐らく修正できるとは思うのですが、まだ修正方法を深くは検討していません)。 ただ、0.16 が早いうちにリリースされることになれば、これは問題解決済みのバージョンのはずなので 0.16 を待っていただくのが良い気もしています。 @Hiroshiba 0.15 系のサポート中に修正するか、0.16 系を待つかは 0.16 のリリース時期次第だと思うので、私には判断できませんでした(最近時間が取れず開発状況を完全にはキャッチアップできていなくてすみません)。こちらの判断をお願いしてもよろしいでしょうか?
なるほどです。これであれば、確かにファイルロックの問題は致命的ですね。 |
@PickledChair 連絡ありがとうございます!! @miyabin1701 |
内容
こんばんは、voicevox-core.dllをアンロードしても辞書ファイル"char.bin"のロックが
外れないので悩んでします・。
実行時の読み込まれてるdllリスト
Base Size Path
0x00000000be220000 0x62000 R:\release\qtMeCabon.exe
0x0000000067600000 0xb5000 R:\release\portaudio_x64.dll
0x00000000cb360000 0x255000 R:\release\voicevox_core.dll
0x00000000ca6b0000 0x494000 R:\release\libmecab64.dll
dllをFreeLibraryでアンロードしました。
0x00000000be220000 0x62000 R:\release\qtMeCabon.exe
0x0000000067600000 0xb5000 R:\release\portaudio_x64.dll
正常にdllはアンロードされましたが、mecabとvoicevox-openjtalk-mecabの開いている
"char.bin"ファイルが開かれたままになっていて、辞書のビルドをしようとするとパーミッションエラーになってしまいます。
windows10になってからなのか?dllが開きっぱなしのファイルは親プロセスが終了するまでロックが解除されないようです。
mecab側で試してみましたが、FreeLibraryの前に使っていたlattice,mecab,modelを
明示的にdestroyするとロックが外れることが分かりました。
voicevox_finalize()の中で、mecabの上記後始末関数呼んで頂ければ助かります。
現在 voicevox_core-0.14.5 を使っています。よろしくお願いします。
Pros 良くなる点
dllをアンロード後にmecabの辞書がビルド可能になります。
Cons 悪くなる点
ソースの行数が少し増える?1行??
実現方法
VOICEVOXのバージョン
-core 0.14.5
OSの種類/ディストリ/バージョン
その他
dllの実行中ロードやアンロードのテストコードを書くには時間がかかるでしょうから修正個所を教えていただければこちらでテストします。または、こちらのソースを先にGitHubにアップする方がよろしければそうします。
The text was updated successfully, but these errors were encountered: