TASEmulators / TASEmulators/BizHawk

[Linux] Unabled to login to retroachievement on Ubuntu 26.04 LTS (mono-6.14.1)

Open
#4,826 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Fault is in third-party code Meta re: RetroAchievements Repro: Affects 2.11.1
Dominant language
C#
Stars
2.8k
Forks
468
PR merge metrics
No merged PRs in 30d

Description

Summary

Attempting to login to retroachievement on Ubuntu 26.04 will always result in a "Login Failed" dialog box and the resulting error, shown below.

I believe this is due to a mono package regression in Ubuntu 26.04 which now defaults to mono-6.14.1 mono-complete now resolves to mono-devel and ca-certificates-mono along with a number of other binaries are no longer shipped.

Repro
  1. Be on Ubuntu 26.04 or later, and Install mono-compelete
  2. Attempt to login to retroachievement
Output
Using SDL2 for host input (keyboard + gamepads)
Loaded RCheevos v11.6
Connected SDL gamepad, device index 0, instance ID 1, name 6B controller
System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: Authentication failed, see inner exception. ---> Mono.Btls.MonoBtlsException: Ssl error:1000007d:SSL routines:OPENSSL_internal:CERTIFICATE_VERIFY_FAILED
  at ./external/boringssl/ssl/handshake_client.c:1132
  at Mono.Btls.MonoBtlsContext.ProcessHandshake () [0x00064] in <bc966b367c7c46aa936bfc6656db2316>:0 
  at Mono.Net.Security.MobileAuthenticatedStream.ProcessHandshake (Mono.Net.Security.AsyncOperationStatus status, System.Boolean renegotiate) [0x00106] in <bc966b367c7c46aa936bfc6656db2316>:0 
  at (wrapper remoting-invoke-with-check) Mono.Net.Security.MobileAuthenticatedStream.ProcessHandshake(Mono.Net.Security.AsyncOperationStatus,bool)
  at Mono.Net.Security.AsyncHandshakeRequest.Run (Mono.Net.Security.AsyncOperationStatus status) [0x00006] in <bc966b367c7c46aa936bfc6656db2316>:0 
  at Mono.Net.Security.AsyncProtocolRequest.ProcessOperation (System.Threading.CancellationToken cancellationToken) [0x0012a] in <bc966b367c7c46aa936bfc6656db2316>:0 
   --- End of inner exception stack trace ---
  at Mono.Net.Security.MobileAuthenticatedStream.ProcessAuthentication (System.Boolean runSynchronously, Mono.Net.Security.MonoSslAuthenticationOptions options, System.Threading.CancellationToken cancellationToken) [0x00346] in <bc966b367c7c46aa936bfc6656db2316>:0 
  at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore (System.IO.Stream stream, System.Net.Security.SslClientAuthenticationOptions sslOptions, System.Threading.CancellationToken cancellationToken) [0x000d2] in <194d75dbcf11427f83c01d6371e21cd1>:0 
   --- End of inner exception stack trace ---
  at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore (System.IO.Stream stream, System.Net.Security.SslClientAuthenticationOptions sslOptions, System.Threading.CancellationToken cancellationToken) [0x00117] in <194d75dbcf11427f83c01d6371e21cd1>:0 
  at System.Net.Http.HttpConnectionPool.CreateConnectionAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x0038d] in <194d75dbcf11427f83c01d6371e21cd1>:0 
  at System.Net.Http.HttpConnectionPool.WaitForCreatedConnectionAsync (System.Threading.Tasks.ValueTask`1[TResult] creationTask) [0x000e8] in <194d75dbcf11427f83c01d6371e21cd1>:0 
  at System.Net.Http.HttpConnectionPool.SendWithRetryAsync (System.Net.Http.HttpRequestMessage request, System.Boolean doRequestAuth, System.Threading.CancellationToken cancellationToken) [0x00085] in <194d75dbcf11427f83c01d6371e21cd1>:0 
  at System.Net.Http.RedirectHandler.SendAsync (System.Net.Http.HttpRequestMessage request, System.Threading.CancellationToken cancellationToken) [0x000b8] in <194d75dbcf11427f83c01d6371e21cd1>:0 
  at System.Net.Http.HttpClient.FinishSendAsyncBuffered (System.Threading.Tasks.Task`1[TResult] sendTask, System.Net.Http.HttpRequestMessage request, System.Threading.CancellationTokenSource cts, System.Boolean disposeCts) [0x0018f] in <194d75dbcf11427f83c01d6371e21cd1>:0 
  at BizHawk.Client.EmuHawk.RCheevos.HttpPost (System.String url, System.String post, System.String type) [0x000ab] in <923595f18a5244b8a77a3faa19fe4777>:0 
Disconnecting SDL gamepad, device index 0, instance ID 1, name 6B controller
abort_threads: Failed aborting id: 0x7512cbbfe6c0, mono_thread_manage will ignore it
Host env.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing the RetroAchievements login on Ubuntu 26.04 with Mono 6.14.1 and inspect the RCheevos.HttpPost entry point shown in the stack trace. Compare the certificate-verification failure with a working environment; done means login succeeds on the reported Ubuntu and Mono setup without weakening certificate validation.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, linux
Domain
authentication, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.