Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions src/coreclr/vm/exceptionhandling.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3717,6 +3717,14 @@ NOINLINE static void NotifyFunctionEnterHelper(StackFrameIterator *pThis, Thread
{
MethodDesc *pMD = pThis->m_crawl.GetFunction();

if (pThis->m_crawl.IsFunclet() && (pMD == pExInfo->m_pMDToReportFunctionLeave))
{
// In case of a funclet, the pMD represents the parent of the funclet. We only want to report entering and leaving
// the method once. So we ignore transitions from the funclet to the parent method or the funclet into another funclet
// of the same parent method.
return;
}
Comment on lines +3720 to +3726
Copy link

Copilot AI Jan 23, 2026

Choose a reason for hiding this comment

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

Consider adding a test case that validates this fix by checking that ExceptionSearchFunctionEnter/ExceptionSearchFunctionLeave and ExceptionUnwindFunctionEnter/ExceptionUnwindFunctionLeave are called exactly once per method when an exception is thrown from within a try-finally block. This would prevent regression of issue #123351.

A test could be structured similar to the scenario in the issue: a method with a try-finally block that throws from the finally, with a profiler that tracks and validates the count of Enter/Leave pairs for each FunctionID.

Copilot uses AI. Check for mistakes.
Copy link
Member

Choose a reason for hiding this comment

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

@copilot open a new pull request to apply changes based on this feedback

Copy link
Member Author

Choose a reason for hiding this comment

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

I am curious :-)

Copy link
Member

Choose a reason for hiding this comment

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

This request won't work well since this PR originates in a personal fork. If you want copilot to help with a PR like this, it works best if the PR is started by copilot. It is a known github copilot workflow limitation.

I am starting all my PRs as copilot PRs for this reason. Once the PR is opened you can push changes into it just like you would into a regular PR, but you can also ask copilot to help seamlessly that is really nice.

Copy link
Member Author

Choose a reason for hiding this comment

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

I am half done with a test that I've started to create myself after your initial comment. I'll push it here once done.

Copy link
Member

Choose a reason for hiding this comment

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

This request won't work well

rats - thanks for the info about it though!

I'll push it here once done.

I'll just wait for that, thanks!


if (pExInfo->m_passNumber == 1)
{
if (pExInfo->m_pMDToReportFunctionLeave != NULL)
Expand Down
Loading