Skip to content

[QUIC] Observe exceptions from _connectionCloseTcs #112190

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 8, 2025

Conversation

ManickaP
Copy link
Member

@ManickaP ManickaP commented Feb 5, 2025

Fixes #112094

Observing the exception the same way as channel does in:

if (tcs.TrySetException(error))
{
// Suppress unobserved exceptions from Completion tasks, as the exceptions will generally
// have been surfaced elsewhere (which may end up making a consumer not consume the completion
// task), and even if they weren't, they're created by a producer who will have "seen" them (in
// contrast to them being created by some method call failing as part of user code).
_ = tcs.Task.Exception;
}

@@ -658,14 +658,22 @@ private unsafe int HandleEventShutdownInitiatedByTransport(ref SHUTDOWN_INITIATE
{
Exception exception = ExceptionDispatchInfo.SetCurrentStackTrace(ThrowHelper.GetExceptionForMsQuicStatus(data.Status, (long)data.ErrorCode));
_connectedTcs.TrySetException(exception);
_connectionCloseTcs.TrySetException(exception);
if (_connectionCloseTcs.TrySetException(exception))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we extract it as a method? as it's used 3 times

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I removed it from ThrowHelper as it's only 2 liner and only used for _connectionCloseTcs. But I can shuffle it back, I don't care that much about it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was thinking it can sit within QuicConnection then?
Plus, extracting it will save us explaining why it's like that in a comment each time

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't want to pollute QuicConnection with a helper method, that's the worst option for me 😢

@ManickaP
Copy link
Member Author

ManickaP commented Feb 8, 2025

/ba-g unrelated

1 similar comment
@ManickaP
Copy link
Member Author

ManickaP commented Feb 8, 2025

/ba-g unrelated

@ManickaP ManickaP merged commit 3998832 into dotnet:main Feb 8, 2025
84 of 86 checks passed
@ManickaP ManickaP deleted the quic-uoe branch February 8, 2025 06:01
grendello added a commit to grendello/runtime that referenced this pull request Feb 10, 2025
* main: (41 commits)
  Automated bump of chrome version (dotnet#112309)
  Add `GetDeclaringType` to `PropertyDefinition` and `EventDefinition`. (dotnet#111646)
  Update the System.ComponentModel.Annotations solution to build in VS (dotnet#112313)
  JIT: initial support for stack allocating arrays of GC type (dotnet#112250)
  [main] Update dependencies from dotnet/roslyn (dotnet#112260)
  Update Xcode casing (dotnet#112307)
  update the location of assert for REG_ZR check (dotnet#112294)
  Enable `SA1206`: Keyword ordering (dotnet#112303)
  Address feedback on dense FrozenDictionary optimization (dotnet#112298)
  Start regular pri-1 tests runs with native AOT (dotnet#111391)
  Observe exceptions from _connectionCloseTcs (dotnet#112190)
  Test failure - SendAsync_RequestVersion20_ResponseVersion20 (dotnet#112232)
  Fix init race in mono_class_try_get_[shortname]_class. (dotnet#112282)
  Remove repeated call to DllMain (dotnet#112285)
  Replace bitvector.h/cpp with ptrArgTP type in gc_unwind_x86.h/inl (dotnet#112268)
  JIT: Limit 3-opt to 1000 swaps per run (dotnet#112259)
  [main] Update dependencies from dotnet/icu, dotnet/runtime-assets (dotnet#112120)
  Update dependencies from https://github.com/dotnet/emsdk build 20250205.3 (dotnet#112223)
  Fix EventPipe on Android CoreClr. (dotnet#112270)
  Fix exception handling in the prestub worker (dotnet#111937)
  ...
@github-actions github-actions bot locked and limited conversation to collaborators Mar 10, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

UnobservedTaskException from QuicConnection that has not been disposed
3 participants