Skip to content

Stack overflow (0xc00000fd) in RPCRT4.dll when using Bot Media SDK with .NET 9.0 #851

@mprachar

Description

@mprachar

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-preview
    • Microsoft.Graph.Communications.Calls.Media: 1.2.0.15690
    • Microsoft.Graph.Communications.Client: 1.2.0.15690

Symptoms

  1. Bot successfully authenticates and joins the Teams meeting
  2. Media session is established (call state transitions to Established)
  3. ~5-10 seconds after joining, the process crashes with:
    • Exception Code: 0xc00000fd (STATUS_STACK_OVERFLOW)
    • Faulting Module: RPCRT4.dll
    • Faulting Application: VoiceRail.Voice.exe

Investigation Findings

We extensively tested various hypotheses:

  1. Disabled ALL event handlers (AudioMediaReceived, AudioSendStatusChanged, Participants.OnUpdated) - still crashed
  2. Offloaded event handlers to ThreadPool - still crashed
  3. Deferred event subscription from constructor - still crashed
  4. 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:

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

  1. Documentation: Please document the .NET 9.0 compatibility issue and the CETCompat workaround
  2. SDK Update: Consider updating the Bot Media SDK to be compatible with .NET 9.0's CFG enforcement
  3. Official Support: Clarify if .NET 9.0 is officially supported or if .NET 8.0 LTS should be used

Reproduction Steps

  1. Create a new .NET 9.0 project targeting win-x64
  2. Add Microsoft.Skype.Bots.Media 1.31.0.225-preview
  3. Implement a basic Teams meeting bot following the samples
  4. Deploy to Windows Server 2022
  5. Join a Teams meeting
  6. 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions