-
Notifications
You must be signed in to change notification settings - Fork 268
Open
Description
Description
When using the Microsoft Bot Media SDK (Microsoft.Skype.Bots.Media version 1.31.0.225-preview) with .NET 9.0, the application crashes with a stack overflow (STATUS_STACK_OVERFLOW / 0xc00000fd) in RPCRT4.dll shortly after successfully joining a Teams meeting.
Environment
- OS: Windows Server 2022 Datacenter (Azure VM)
- .NET Version: .NET 9.0
- SDK Versions:
Microsoft.Skype.Bots.Media: 1.31.0.225-previewMicrosoft.Graph.Communications.Calls.Media: 1.2.0.15690Microsoft.Graph.Communications.Client: 1.2.0.15690
Symptoms
- Bot successfully authenticates and joins the Teams meeting
- Media session is established (call state transitions to
Established) - ~5-10 seconds after joining, the process crashes with:
- Exception Code:
0xc00000fd(STATUS_STACK_OVERFLOW) - Faulting Module:
RPCRT4.dll - Faulting Application:
VoiceRail.Voice.exe
- Exception Code:
Investigation Findings
We extensively tested various hypotheses:
- Disabled ALL event handlers (AudioMediaReceived, AudioSendStatusChanged, Participants.OnUpdated) - still crashed
- Offloaded event handlers to ThreadPool - still crashed
- Deferred event subscription from constructor - still crashed
- Tested SDK version 1.31.0.225-preview (minimum required by Calls.Media) - still crashed
The crash occurs INSIDE the SDK's native code, not in our managed code.
Root Cause
After extensive research, we identified this as a .NET 9.0 Control Flow Guard (CFG) compatibility issue:
- .NET 9.0 introduced stricter CFG/CET (Control-flow Enforcement Technology) enforcement
- The Bot Media SDK's native DLLs make RPC callbacks into managed code
- These callbacks fail CFG stack validation, causing the stack overflow in RPCRT4.dll
- Related issue: Stack overflow when calling LoadLibrary on .NET 9.0, but not on .NET 8.0 dotnet/runtime#119067
Workaround
Adding <CETCompat>false</CETCompat> to the project file resolves the issue:
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<!-- Disable CET/CFG compatibility for Bot Media SDK native interop -->
<CETCompat>false</CETCompat>
</PropertyGroup>Request
- Documentation: Please document the .NET 9.0 compatibility issue and the
CETCompatworkaround - SDK Update: Consider updating the Bot Media SDK to be compatible with .NET 9.0's CFG enforcement
- Official Support: Clarify if .NET 9.0 is officially supported or if .NET 8.0 LTS should be used
Reproduction Steps
- Create a new .NET 9.0 project targeting
win-x64 - Add
Microsoft.Skype.Bots.Media1.31.0.225-preview - Implement a basic Teams meeting bot following the samples
- Deploy to Windows Server 2022
- Join a Teams meeting
- Observe crash ~5-10 seconds after joining
Additional Context
- The same code works correctly when
<CETCompat>false</CETCompat>is added - We have not tested with .NET 8.0 (downgrade would also likely resolve the issue)
- All Windows Media Foundation components and VC++ Redistributables are installed
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels