Open ami-GS opened 1 month ago
Maybe, the cause of 2 QUIC_CONNECTION_EVENT_PEER_ADDRESS_CHANGED
indication is that these PING frames are arrived after unregistering packet hook? so QUIC_CONNECTION_EVENT_PEER_ADDRESS_CHANGED
happens to change back to original peer address?
Then the second QUIC_CONNECTION_EVENT_PEER_ADDRESS_CHANGED
happens with receiving PING frames
Not sure about the ASSERT yet
This is the assert after the second indication
[Microsoft-Quic][ lib] ASSERT, D:\a\msquic\msquic\src\core\send.c:957 - Builder->Metadata->FrameCount > PrevFrameCount || RanOutOfRoom || (CxPlatGetAllocFailDenominator() != 0).
This assert generally means that for some reason we thought we needed to call QuicSendWriteFrames
to put some stuff in a packet, but when we ran through the logic, we ended up not doing anything. This usually indicates a bug in our logic. The complexity comes from the fact that we have related logic in two places:
QuicSendFlush
.QuicSendWriteFrames
we have the actual logic to write data to a packet.Rarely, we have a bug that indicates these two are somehow out of sync. I'm wondering if somehow we need to send a PING frame for one thing, but then path probing kicks in (because there is a UDP port change) and we end up sending the PING in a different code path instead (where we might need to send it for both places?)....
Describe the bug
Windows got assert by Basic/WithRebindPaddingArgs.RebindAddrPadded/*
[Microsoft-Quic][ lib] ASSERT, D:\a\msquic\msquic\src\core\send.c:957 - Builder->Metadata->FrameCount > PrevFrameCount || RanOutOfRoom || (CxPlatGetAllocFailDenominator() != 0).
Affected OS
Additional OS information
No response
MsQuic version
main
Steps taken to reproduce bug
needs automation
Expected behavior
pass
Actual outcome
[Microsoft-Quic][ lib] ASSERT, D:\a\msquic\msquic\src\core\send.c:957 - Builder->Metadata->FrameCount > PrevFrameCount || RanOutOfRoom || (CxPlatGetAllocFailDenominator() != 0).
Additional details
By comparing passed case (with Ubuntu),
QUIC_CONNECTION_EVENT_PEER_ADDRESS_CHANGED
twiceQUIC_CONNECTION_EVENT_PEER_ADDRESS_CHANGED
indication after the firstQUIC_CONNECTION_EVENT_PEER_ADDRESS_CHANGED
indication.This is first indication![image](https://github.com/microsoft/msquic/assets/5763034/47a45106-7264-45e5-bc61-00213fd4ae2b)
This is second indication![image](https://github.com/microsoft/msquic/assets/5763034/abd00e67-6361-43b4-8100-3db06edfb806)
This is the assert after the second indication
[Microsoft-Quic][ lib] ASSERT, D:\a\msquic\msquic\src\core\send.c:957 - Builder->Metadata->FrameCount > PrevFrameCount || RanOutOfRoom || (CxPlatGetAllocFailDenominator() != 0).