Repository navigation
BufferedFileStreamStrategy.ReadAsync throws Arg_InvalidOperationException when EnableLLVM == true #104167
Description
Activity
Is this reproducible with a sample which just calls FileStream.ReadAsync ?
Is this reproducible with a sample which just calls FileStream.ReadAsync ?
@pierre-galaup do you think you could try to create a simplified version of your demo app that has LLVM enabled and loops to try to read some files (async) and stream these off into the void (just as a way to verify this is genuinely coming from FileStream.ReadAsync when LLVM is enabled)? If not, I might be able to try but I can't prioritise this right now (it will be some weeks before I can do this).
@jamescrosswell @vargaz @pierre-galaup
I'm having the same issue with Sentry when enabling LLVM.
I've easily reproduced it in a sample app which just callsFileStream.ReadAsync.
Could this be fixed? Is there a workaround?Reacted by James CrosswellHere is a repro project: https://github.com/tranb3r/Issues/tree/main/MauiAppLlvmReadAsync
cc @vargaz@grendello @vargaz @lamdageek
Any update?
This is impacting the Sentry SDK, and no workaround seems possible./cc @steveisok
@grendello @vargaz @lamdageek Any update? This is impacting the Sentry SDK, and no workaround seems possible.
@tranb3r no update yet. We'll share when we have more details.
Might be related to #100527 we should try the upcoming servicing release to see if the AOT compiler fixes there will address this one, too
- ghost addedneeds-area-labelAn area label is needed to ensure this gets routed to the appropriate area ownersAn area label is needed to ensure this gets routed to the appropriate area owners
on Jun 28, 2024 - addeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Jun 28, 2024 4 remaining items
- removeduntriagedNew issue has not been triaged by the area ownerNew issue has not been triaged by the area owner
on Jun 28, 2024 - removedneeds-area-labelAn area label is needed to ensure this gets routed to the appropriate area ownersAn area label is needed to ensure this gets routed to the appropriate area owners
on Jun 28, 2024 I've tested 8.0.7 but I still get the error when running my repro app.
Could somebody please double-check?@tranb3r Thanks for validating. We would need to look into it further.
Any update? Thanks
Still not working in net9-rc2.
Still happening with net9 (net-android 35.0.7)
Still happens with MAUI 9.0.81.
This is impacting the Sentry SDK, and no workaround seems possible.
There is a workaround implemented in Sentry that is suggested by these new analyser warnings:
- CA2022: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca2022
- CA1835: https://learn.microsoft.com/en-us/dotnet/fundamentals/code-analysis/quality-rules/ca1835
... if you can modify the code that is making the call to
ReadAsyncthat is.
Android application type
.NET Android (net7.0-android, net8.0-android, etc.)
Affected platform version
.NET 8.0.0
Description
We have a customer using the Sentry SDK in their MAUI application. One piece of functionality they've built sends log files through to a Sentry server. A background task in the Sentry API is calling
FileStream.ReadAsyncto enable this.If the application is compiled with the build property
<EnableLLVM>true</EnableLLVM>then frequently the logs are not sent to Sentry. Trawling through the diagnostic logs, it appears theBufferedFileStreamStrategy.ReadAsyncmethod is throwing anArg_InvalidOperationException, but it's not clear why.See full discussion (including the source code to an app that allows this issue to be reproduced) at:
Steps to Reproduce
Steps to reproduce described here.
Did you find any workaround?
No. The customer needs to enable
EnableLLVMfor performance reasons.Relevant log output
2024-02-15 14:50:56.008 9130-9159 DOTNET com.companyname.sentrydebughelper I Debug: Android: Serializing object: { "reportType": "SendLogs" } 2024-02-15 14:50:56.010 9130-9209 DOTNET com.companyname.sentrydebughelper I Warning: Failed to serialize envelope item System.InvalidOperationException: Arg_InvalidOperationException 2024-02-15 14:50:56.010 9130-9209 DOTNET com.companyname.sentrydebughelper I at System.Threading.Tasks.Sources.ManualResetValueTaskSourceCore`1[[System.Int64, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].GetStatus(Int16 ) at Microsoft.Win32.SafeHandles.SafeFileHandle.ThreadPoolValueTaskSource.GetStatus(Int16 ) at System.IO.Strategies.BufferedFileStreamStrategy.ReadAsync(Byte[] , Int32 , Int32 , CancellationToken ) 2024-02-15 14:50:56.010 9130-9209 DOTNET com.companyname.sentrydebughelper I at System.IO.FileStream.ReadAsync(Byte[] , Int32 , Int32 , CancellationToken ) at Sentry.Internal.PartialStream.ReadAsync(Byte[] , Int32 , Int32 , CancellationToken ) 2024-02-15 14:50:56.010 9130-9209 DOTNET com.companyname.sentrydebughelper I at System.IO.Stream.<CopyToAsync>g__Core|27_0(Stream , Stream , Int32 , CancellationToken ) at Sentry.Protocol.Envelopes.EnvelopeItem.BufferPayloadAsync(IDiagnosticLogger , CancellationToken ) at Sentry.Protocol.Envelopes.EnvelopeItem.SerializeAsync(Stream , IDiagnosticLogger , CancellationToken ) 2024-02-15 14:50:56.010 9130-9209 DOTNET com.companyname.sentrydebughelper I at Sentry.Protocol.Envelopes.Envelope.SerializeAsync(Stream , IDiagnosticLogger , ISystemClock , CancellationToken )