-
Notifications
You must be signed in to change notification settings - Fork 611
Description
Describe the bug
Hi there,
Ever since upgrading from 6.x to 7.x, I've been running into intermittent deadlocks whenever I try to close a channel via CloseAsync
.
I haven't been able to reproduce it locally, but I've been able to do some remote debugging, but I could not get any insight. (all TP threads are waiting for work)
I did however manage to run a dotnet-dump dumpasync
during one of these deadlocks and got the following info:
First dump
00007ebcbe050400 00007efcd1b1e298 ( ) System.Threading.Tasks.Task
00007ebcbe9d7c48 00007efcd74554b8 (0) RabbitMQ.Client.ConsumerDispatching.ConsumerDispatcherChannelBase+<WaitForShutdownAsync>d__17
00007ebcbe915d68 00007efcd7453028 (3) RabbitMQ.Client.Impl.Channel+<CloseAsync>d__73
00007ebcbe915e10 00007efcd74533e0 (0) RabbitMQ.Client.Impl.AutorecoveringChannel+<CloseAsync>d__53
00007ebcbe915ea0 00007efcd7453788 (0) <My code>
Second dump (another instance)
00007f0a56a17290 00007f4a69375380 ( ) System.Threading.Tasks.Task
00007f0a597ed238 00007f4a6d2dd968 (0) RabbitMQ.Client.ConsumerDispatching.ConsumerDispatcherChannelBase+<WaitForShutdownAsync>d__17
00007f0a59573cf8 00007f4a6d2da998 (3) RabbitMQ.Client.Impl.Channel+<CloseAsync>d__73
00007f0a59573da0 00007f4a6d2dad50 (0) RabbitMQ.Client.Impl.AutorecoveringChannel+<CloseAsync>d__53
00007f0a59573e30 00007f4a6d2db0f8 (0) <My code>
I noticed that in both dump instances, the stacks aren’t displayed with the usual Awaiting:
notation you often see in async stack traces, but it might be normal.
Reproduction steps
I haven’t pinned down a reliable way to reproduce this, but calling CloseAsync
more frequently seems to increase the chances of hitting the deadlock. It also appears more common on Linux than Windows, though that might just be due to hardware differences rather than OS behavior.
Expected behavior
When calling CloseAsync
, I’d expect the channel to close normally without causing a deadlock.
Additional context
No response