TASEmulators / TASEmulators/BizHawk
[Linux] Unabled to login to retroachievement on Ubuntu 26.04 LTS (mono-6.14.1)
Nobody has claimed this yet.
- 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
- Be on Ubuntu 26.04 or later, and Install
mono-compelete - 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.
- Ubuntu 26.04 LTS (resolute)
- BizHawk 2.11.1 https://github.com/TASEmulators/BizHawk/commit/bdddf4a58aa1a022afb11dc73294a81a5aa7bbd5
- Mono: 6.14.1+ds2-2 (
mono-devel, from Ubuntu package manager)
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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