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

GOOGLE_APPLICATION_CREDENTIALSという環境変数を仕込んでACTを起動すると、YUKKURIがエラーになる #336

Open
curi1119 opened this issue Oct 17, 2021 · 0 comments

Comments

@curi1119
Copy link

curi1119 commented Oct 17, 2021

現象の詳細
現象の詳細を明確に記載します。

再現方法
現象の再現方法を記載します。

  1. Windowsの環境変数でGOOGLE_APPLICATION_CREDENTIALSにGCPのクレデンシャルのパス値をセットする。
    例:PowerShellで、
    > [Environment]::SetEnvironmentVariable("GOOGLE_APPLICATION_CREDENTIALS", "C:\gcp\your-credential.json", "User")
    このyour-credential.jsonはGCPの正規のファイルでも空のファイルでも同じ挙動をする。

  2. ACTを起動する

  3. 起動時に[Plugin init error !]が発生する(詳細は後述)

環境

  • 補助輪のバージョン: v9.3.6
  • FFXIV_ACT_Pluginのバージョン: v2.2.1.6
  • OS: Windows 10 Pro 21H1

思うにGoogleTextSpeechがYUKKURIに搭載されているので、GOOGLE_APPLICATION_CREDENTIALSの環境変数が設定されいる場合、Googleの認証情報を読み取る機能が想定外の挙動をしているように思われる。
環境変数を削除するとPluginの例外は発生しなくなります。
起動時に発生する例外を貼ります。

System.InvalidOperationException

Error reading credential file from location C:\gcp\your-cred.json: パス 'C:\gcp\your-cred.json' の一部が見つかりませんでした。
Please check the value of the Environment Variable GOOGLE_APPLICATION_CREDENTIALS
   場所 Google.Apis.Auth.OAuth2.DefaultCredentialProvider.<CreateDefaultCredentialAsync>d__11.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   場所 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   場所 Google.Api.Gax.Grpc.ChannelPool.<CreateChannelCredentialsUncached>d__5.MoveNext()
--- 直前に例外がスローされた場所からのスタック トレースの終わり ---
   場所 System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   場所 Google.Api.Gax.TaskExtensions.WaitWithUnwrappedExceptions(Task task)
   場所 Google.Api.Gax.Grpc.ChannelPool.GetChannel(GrpcAdapter grpcAdapter, String endpoint, GrpcChannelOptions channelOptions)
   場所 Google.Api.Gax.Grpc.ClientBuilderBase`1.CreateCallInvoker()
   場所 Google.Cloud.TextToSpeech.V1.TextToSpeechClientBuilder.BuildImpl()
   場所 ACT.TTSYukkuri.Config.GoogleCloudTextToSpeechConfig.<>c.<.cctor>b__37_0()
   場所 System.Lazy`1.CreateValue()
   場所 System.Lazy`1.LazyInitValue()
   場所 ACT.TTSYukkuri.Config.GoogleCloudTextToSpeechConfig.EnumerateVoice()
   場所 ACT.TTSYukkuri.Config.GoogleCloudTextToSpeechConfig.set_LanguageCode(String value)
   場所 ACT.TTSYukkuri.Config.GoogleCloudTextToSpeechConfig.SetRecommend()
   場所 ACT.TTSYukkuri.Config.Settings..ctor()
   場所 ACT.TTSYukkuri.Config.Settings.get_Default()
   場所 ACT.TTSYukkuri.PluginCore.<>c__DisplayClass30_0.<<InitPlugin>b__0>d.MoveNext()

Inner Exception :
System.IO.DirectoryNotFoundException

パス 'C:\gcp\your-cred.json' の一部が見つかりませんでした。
   場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
   場所 System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)
   場所 System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access)
   場所 Google.Apis.Auth.OAuth2.DefaultCredentialProvider.GetStream(String filePath)
   場所 Google.Apis.Auth.OAuth2.DefaultCredentialProvider.CreateDefaultCredentialFromFile(String credentialPath)
   場所 Google.Apis.Auth.OAuth2.DefaultCredentialProvider.<CreateDefaultCredentialAsync>d__11.MoveNext()

また、この例外が発生した場合、ACTのフォルダに2つのDLLが作成され、ACTのNotifications上に以下のような警告が発生する。

The following assemblies were not recognized.  If they are plugins or from plugins, they should be deleted or moved to another folder to avoid "wrong version" load issues.

grpc_csharp_ext.x64.dll
grpc_csharp_ext.x86.dll

このNotificationsは環境変数と作成された2つのDLLを削除した上でACTを起動すると解消する。

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

No branches or pull requests

1 participant