Multiple Ubuntu users report issue with FFVII Ever Crisis on Proton

Ubuntu Version: Studio 24.10

Desktop Environment (if applicable): KDE Plasma 6.1.5

Problem Description: https://www.protondb.com/app/2484110 - multiple users (including myself) reporting the same issue with Final Fantasy VII Ever Crisis on Steam using the Proton layer on Ubuntu.
One users reports they were about able to progress beyond this roadblock when they changed to a different distribution.
Game installs perfectly and runs, but goes to a black screen after the main menu. The engine is still running as the mouse interactions with the screen still display and the music continues to play.

Relevant System Information:
image

Screenshots or Error Messages: N/A

What I’ve Tried: All versions of Proton. I’m investigating running it under Wine but I don’t think it will fix the problem as the app runs…


1 Like

Never heard of this game, but installed it because it’s free. I’m using Ubuntu 24.04 with GNOME on a ThinkPad Z13.

I get the same issue. If I look at the log file (in .steam/debian-installation/steamapps/compatdata/2484110/pfx/drive_c/users/steamuser/AppData/LocalLow/SquareEnix/FF7EC/Player.log) I see the final entry as:

Ping: Error performing ICMP transmission. Possibly because of a timeout

Further up the log I also see:

Octo/Data/DataUtils/SecureSerializableDatabase: Exception deserializing database: System.Security.Cryptography.CryptographicException: Bad PKCS7 padding. Invalid length 0.

This makes me suspect that it’s unable to verify the certificate or connection to the Square Enix (or Steam) content delivery network which is where the bulk of the game download comes from. It’s possible there may be an outdated certificate or library required by the game.

Larger log chunk
Octo/Data/DataUtils/SecureSerializableDatabase: Exception deserializing database: System.Security.Cryptography.CryptographicException: Bad PKCS7 padding. Invalid length 0.
  at Mono.Security.Cryptography.SymmetricTransform.ThrowBadPaddingException (System.Security.Cryptography.PaddingMode padding, System.Int32 length, System.Int32 position) [0x00000] in <00000000000000000000000000000000>:0
  at Mono.Security.Cryptography.SymmetricTransform.FinalDecrypt (System.Byte[] inputBuffer, System.Int32 inputOffset, System.Int32 inputCount) [0x00000] in <00000000000000000000000000000000>:0
  at System.Security.Cryptography.CryptoStream.FlushFinalBlock () [0x00000] in <00000000000000000000000000000000>:0
  at System.Security.Cryptography.CryptoStream.Dispose (System.Boolean disposing) [0x00000] in <00000000000000000000000000000000>:0
  at System.IO.Stream.Close () [0x00000] in <00000000000000000000000000000000>:0
  at System.IO.BinaryReader.Dispose (System.Boolean disposing) [0x00000] in <00000000000000000000000000000000>:0
  at FastAESAlgorithmDotnet.Crypt (System.Security.Cryptography.ICryptoTransform transform, System.ReadOnlySpan`1[T] input, System.Int32 offset, System.Int32 length, System.Byte[] output) [0x00000] in <00000000000000000000000000000000>:0
  at FastAESAlgorithmDotnet.Decrypt (System.ReadOnlySpan`1[T] cipher, System.Int32 offset, System.Int32 length, System.Security.Cryptography.CipherMode mode, System.Security.Cryptography.PaddingMode padding, System.Byte[] key, System.Byte[] iv, System.Byte[] output) [0x00000] in <00000000000000000000000000000000>:0
  at FastAES.Decrypt (System.ReadOnlySpan`1[T] cipher, System.Int32 offset, System.Int32 length, System.Security.Cryptography.CipherMode mode, System.Security.Cryptography.PaddingMode padding, System.Int32 keySize, System.Byte[] key, System.Byte[] iv, System.Byte[] output) [0x00000] in <00000000000000000000000000000000>:0
  at FastAES.Decrypt (System.ReadOnlySpan`1[T] cipher, System.Int32 offset, System.Int32 length, System.Security.Cryptography.CipherMode mode, System.Security.Cryptography.PaddingMode padding, System.Int32 keySize, System.Byte[] key, System.Byte[] iv) [0x00000] in <00000000000000000000000000000000>:0
  at FastAES.Decrypt (System.ReadOnlySpan`1[T] cipher, System.Byte[] key, System.Byte[] iv) [0x00000] in <00000000000000000000000000000000>:0
  at Octo.Data.AESCrypt.Decrypt (System.IO.Stream stream) [0x00000] in <00000000000000000000000000000000>:0
  at Octo.Data.SecureFile.CreateMode1ReadStream (System.IO.Stream cipherStream) [0x00000] in <00000000000000000000000000000000>:0
  at Octo.Data.SecureFile.DecryptStreamInternal (System.IO.Stream stream) [0x00000] in <00000000000000000000000000000000>:0
  at Octo.Data.SecureFile.Load () [0x00000] in <00000000000000000000000000000000>:0
  at Octo.Data.SecureSerializableDatabase`1[T].Deserialize () [0x00000] in <00000000000000000000000000000000>:0
  at Octo.Data.DataManager.ReadSecureDatabase (System.String path) [0x00000] in <00000000000000000000000000000000>:0
  at Octo.Data.DataManager.ConstructDictionaryWithLocalDatabase () [0x00000] in <00000000000000000000000000000000>:0
  at Octo.OctoManager._Setup (Octo.IOctoSettings settings, System.Boolean reset) [0x00000] in <00000000000000000000000000000000>:0
  at Octo.OctoManager.Setup (Octo.OctoFullSettings settings, System.Boolean reset) [0x00000] in <00000000000000000000000000000000>:0
  at Command.AssetManager+AssetBundleAssetProvider.SetupAsync (System.Threading.CancellationToken cancellationToken) [0x00000] in <00000000000000000000000000000000>:0
  at Command.AssetManager+AssetBundleAssetProvider.SetupAsync (System.Threading.CancellationToken cancellationToken) [0x00000] in <00000000000000000000000000000000>:0
  at Command.AssetManager.SetupAsync (System.Threading.CancellationToken cancellationToken) [0x00000] in <00000000000000000000000000000000>:0
  at Command.AssetManager.SetupAsync (System.Threading.CancellationToken cancellationToken) [0x00000] in <00000000000000000000000000000000>:0
  at Command.SystemOperator.SetupGameServerAsync (System.Threading.CancellationToken token, Command.UI.ModalManager modalManager, System.Boolean ignoreErrorAnyModal) [0x00000] in <00000000000000000000000000000000>:0
  at Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Api.Check.RequestAsync (System.Threading.CancellationToken token) [0x00000] in <00000000000000000000000000000000>:0
  at Cysharp.Threading.Tasks.UniTaskCompletionSourceCore`1[TResult].TrySetResult (TResult result) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Api.ApiCommon.RequestAsync (System.Threading.CancellationToken token, Command.ApiNetwork.Api.ApiRequest request, System.Boolean interrupt) [0x00000] in <00000000000000000000000000000000>:0
  at Cysharp.Threading.Tasks.UniTaskCompletionSource`1[T].TrySignalCompletion (Cysharp.Threading.Tasks.UniTaskStatus status) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Api.ApiCommon+<>c__DisplayClass9_0.<RequestAsync>b__1 (Command.ApiNetwork.Api.BaseResponse response) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Api.ApiBase`2[TRequest,TResponse].OnSuccessApi (Command.ApiNetwork.Api.IResponse response) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Job.Response.JobResponseHandler.NotifyApiSuccess (Command.ApiNetwork.Job.IJob job, Command.ApiNetwork.Api.IResponse response) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Executor.Response.ResponseHandleExecutor+<>c__DisplayClass4_0.<HandleResponse>b__0 (Command.ApiNetwork.Enum.RetryHandleType handleType) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Job.Response.JobResponseHandler.OnSuccess[T] (Command.ApiNetwork.Job.IJob job, T response) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Executor.Response.ResponseHandleExecutor+<>c__DisplayClass4_0.<HandleResponse>b__0 (Command.ApiNetwork.Enum.RetryHandleType handleType) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Job.Response.JobResponseHandler.OnResponse[T] (Command.ApiNetwork.Job.IJob job, T response, System.Int32 code, System.Boolean isError) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.Job.Job.OnHttpResponse (System.Int32 code, UnityEngine.Networking.DownloadHandler downloadHandler, System.Boolean withEncryption) [0x00000] in <00000000000000000000000000000000>:0
  at Command.ApiNetwork.HttpClient.CommandWebClient.OnCompletedWebRequest (UnityEngine.AsyncOperation _) [0x00000] in <00000000000000000000000000000000>:0
  at UnityEngine.AsyncOperation.InvokeCompletionEvent () [0x00000] in <00000000000000000000000000000000>:0
3 Likes

FWIW I tried a few things. My spidey sense is pointing to the fact that we use libcrypto3, so I tried using LD_PRELOAD to point the launcher at the older libcrypto we also have in /usr/lib, but it didn’t work.

I also tried using the Steam Snap, as well as the deb, and got the same there.

I ran wireshark to look at what it’s doing on the network, but ran out of time.

It’s something networking related, given it tries to download content from their CDN (I can see that in wireshark) but there’s some certificate or crypto library issue. It might be interesting to see what crypto library it uses on other distros.

2 Likes

Thank you so much for looking into this.

That narrows it down a lot and gives me a chance to ask for specifics from players using others distros.

Much appreciated

2 Likes

This topic was automatically closed after 30 days. New replies are no longer allowed.