runtime: [regression/8.0.0-preview.7.8842] - AndroidMessageHandler - Cannot access a disposed object

Description

When running a http client in a second project inside a solution the connection to the web is broken sporadically in the latest .net8 preview. Each request will run into the same error. Restarting the debug session in the emulator can either solve the issue for the entire time the app runs or will still be borked. After several restarts i’ll work again. In .net7 this worked exactly as intended.

Steps to Reproduce

  1. Create a sample project
  2. Add a second project
  3. add an http client to the second c# project (non-maui)
  4. call the method from MAUI app with an Android device
  5. restart several times to provoke this error

Link to public reproduction project repository

No response

Version with bug

8.0.0-preview.7.8842

Is this a regression from previous behavior?

Yes, this used to work in .NET MAUI

Last version that worked well

7.0.92

Affected platforms

Android

Affected platform versions

Android 13

Did you find any workaround?

Restarting the app until it isn’t broken.

Relevant log output

{System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'AndroidMessageHandler'.
   at Xamarin.Android.Net.AndroidMessageHandler.AssertSelf() in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 349
   at Xamarin.Android.Net.AndroidMessageHandler.ConfigureKeyStore(KeyStore keyStore) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 1016
   at Xamarin.Android.Net.AndroidMessageHandler.SetupSSL(HttpsURLConnection httpsConnection, HttpRequestMessage requestMessage) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 1172
   at Xamarin.Android.Net.AndroidMessageHandler.SetupRequestInternal(HttpRequestMessage request, URLConnection conn) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 1088
   at Xamarin.Android.Net.AndroidMessageHandler.DoSendAsync(HttpRequestMessage request, CancellationToken cancellationToken) in /Users/runner/work/1/s/xamarin-android/src/Mono.Android/Xamarin.Android.Net/AndroidMessageHandler.cs:line 455
   at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
   at Amazon.Runtime.HttpWebRequestMessage.GetResponseAsync(CancellationToken cancellationToken) in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\HttpHandler\_netstandard\HttpRequestMessageFactory.cs:line 515
   at Amazon.Runtime.Internal.HttpHandler`1.<InvokeAsync>d__9`1[[System.Net.Http.HttpContent, System.Net.Http, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a],[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\HttpHandler\HttpHandler.cs:line 185
   at Amazon.Runtime.Internal.Unmarshaller.<InvokeAsync>d__3`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\Unmarshaller.cs:line 85
   at Amazon.SQS.Internal.ValidationResponseHandler.<InvokeAsync>d__1`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Services\SQS\Custom\Internal\ValidationResponseHandler.cs:line 43
   at Amazon.Runtime.Internal.ErrorHandler.<InvokeAsync>d__5`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 99
   at Amazon.Runtime.Internal.ErrorHandler.<InvokeAsync>d__5`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\ErrorHandler\ErrorHandler.cs:line 107
   at Amazon.Runtime.Internal.CallbackHandler.<InvokeAsync>d__9`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CallbackHandler.cs:line 61
   at Amazon.Runtime.Internal.Signer.<InvokeAsync>d__1`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\Signer.cs:line 56
   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.<InvokeAsync>d__2`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\EndpointDiscoveryHandler.cs:line 75
   at Amazon.Runtime.Internal.EndpointDiscoveryHandler.<InvokeAsync>d__2`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\EndpointDiscoveryHandler.cs:line 85
   at Amazon.Runtime.Internal.CredentialsRetriever.<InvokeAsync>d__7`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CredentialsRetriever.cs:line 98
   at Amazon.Runtime.Internal.RetryHandler.<InvokeAsync>d__10`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\RetryHandler\RetryHandler.cs:line 131
   at Amazon.Runtime.Internal.RetryHandler.<InvokeAsync>d__10`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\RetryHandler\RetryHandler.cs:line 146
   at Amazon.Runtime.Internal.CallbackHandler.<InvokeAsync>d__9`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CallbackHandler.cs:line 61
   at Amazon.Runtime.Internal.CallbackHandler.<InvokeAsync>d__9`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\CallbackHandler.cs:line 61
   at Amazon.Runtime.Internal.ErrorCallbackHandler.<InvokeAsync>d__5`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\ErrorCallbackHandler.cs:line 58
   at Amazon.Runtime.Internal.MetricsHandler.<InvokeAsync>d__1`1[[Amazon.SQS.Model.SendMessageResponse, AWSSDK.SQS, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604]].MoveNext() in D:\JenkinsWorkspaces\trebuchet-stage-release\AWSDotNetPublic\sdk\src\Core\Amazon.Runtime\Pipeline\Handlers\MetricsHandler.cs:line 65
   at app.Shared.appClient.<SendAsync>d__54`1[[app.Shared.GetAllRes`1[[app.Shared.OrganisationalDto, app.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], app.Shared, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]].MoveNext() in E:\sources\app\appShared\appClient.cs:line 819}

About this issue

  • Original URL
  • State: closed
  • Created 10 months ago
  • Reactions: 1
  • Comments: 30 (22 by maintainers)

Commits related to this issue

Most upvoted comments

The fix is lined up to be in GA.

Hi I’m getting this error as well in 8.0.0-rc.2.23479.6. Is that to be expected?

Yes, this is expected. The fix applied to GA and will be available soon.

@UkeHa Here is the repo. AndroidMessageHandler

  1. Click on the Download All button (This produces the error in Android only)

Also,

  1. Click On Download One button
  2. Click on the Download All button
  3. Click again on the Download All button (this should produce an error, if not click again)

On a side note, If you reference .net7, you won’t get any error.

This increasingly looks like “not a MAUI bug”.