Skip to content

[release/11.0] Fix ComWrappers ICustomQueryInterface exception handling - #132725

Merged
artl93 merged 1 commit into
release/11.0from
backport/pr-132716-to-release/11.0
Sep 5, 2026
Merged

[release/11.0] Fix ComWrappers ICustomQueryInterface exception handling#132725
artl93 merged 1 commit into
release/11.0from
backport/pr-132716-to-release/11.0

Conversation

@github-actions

@github-actions github-actions Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Backport of #132716 to release/11.0

/cc @jkoritzinsky

Customer Impact

  • Customer reported
  • Found internally

User gets a null object from a QueryInterface against a .NET object that implements ICustomQueryInterface exposed to COM via ComWrappers that causes the ICustomQueryInterface implementation to throw an exception

Regression

  • Yes
  • No

Regressed in #125697

Testing

Caught in outerloop testing

Risk

Low. Targeted scenario and we have testing validation.

IMPORTANT: If this backport is for a servicing release, please verify that:

  • For .NET 8 and .NET 9: The PR target branch is release/X.0-staging, not release/X.0.
  • For .NET 10+: The PR target branch is release/X.0 (no -staging suffix).

Package authoring no longer needed in .NET 9

IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version.
Keep in mind that we still need package authoring in .NET 8 and older versions.

Co-authored-by: Jeremy Koritzinsky <Jeremy.Koritzinsky@microsoft.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 3 pipeline(s).
13 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke
See info in area-owners.md if you want to be subscribed.

@AaronRobinsonMSFT AaronRobinsonMSFT left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@agocke agocke added the Servicing-approved Approved for servicing release label Aug 28, 2026
@akoeplinger

Copy link
Copy Markdown
Member

/ba-g failures are unrelated (#132107 and #128907)

@akoeplinger
akoeplinger requested a review from artl93 September 3, 2026 17:58
@artl93
artl93 requested review from pragmanomos and a lite review from Copilot September 3, 2026 19:44

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟢 Approval recommended

The change is small, aligns with the native TryInvokeICustomQueryInterfaceResult contract (FailedToInvoke = -1), and directly prevents an assert/crash in the COM QueryInterface path.

Pull request overview

Backports a CoreCLR ComWrappers fix so that exceptions thrown by a managed ICustomQueryInterface.GetInterface implementation are reported to native code as an invocation failure instead of being misinterpreted as “handled”, avoiding a native assert/crash when *ppvObject remains null.

Changes:

  • Update ComWrappers.CoreCLR.cs UCO wrapper to return -1 (TryInvokeICustomQueryInterfaceResult.FailedToInvoke) from the exception path instead of default (0 / Handled).
File summaries
File Description
src/coreclr/System.Private.CoreLib/src/System/Runtime/InteropServices/ComWrappers.CoreCLR.cs Ensures CallICustomQueryInterface reports FailedToInvoke when the managed call throws, preventing native code from treating the result as Handled with a null out pointer.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 0
  • Review effort level: Lite

@artl93 artl93 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Approving by proximity.

@artl93
artl93 merged commit 6f1149d into release/11.0 Sep 5, 2026
109 of 113 checks passed
@artl93
artl93 deleted the backport/pr-132716-to-release/11.0 branch September 5, 2026 01:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-VM-coreclr Servicing-approved Approved for servicing release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants