microsoft / microsoft/perfview

Freeze processing in EventPipeEventSource if uncaught exception is thrown in callback.

Open
#1,290 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug help wanted
Dominant language
C#
Stars
4.7k
Forks
775
Avg merge
5d 11h
Merged PRs (30d)
9

Description

Environment

  • Microsoft.Diagnostics.Tracing.TraceEvent: 2.0.61
  • Microsoft.Diagnostics.NETCore.Client: 0.2.141901
  • EventPipe sender app and receiver app's TFM: net5.0-rc2

Steps to reproduce

  1. run app which produce EventSource event periodically
  2. start EventPipe session by DiagnosticClient
  3. create EventPipeEventSource from event stream
  4. set callback to DynamicEventParser.All
    • Exception will be thrown in callback
  5. start processing

full test code is uploaded to gist

Expected result

callback is invoked periodicaly, or at least terminate event processing when EventPipeEventSource.StopProcessing is called.

Actual result

callback was never invoked again, and EventPipeEventSource.Process never returned, even if EventPipeEventSource.StopProcessing was called.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with EventPipeEventSource.Process and the callback assigned through DynamicEventParser.All, then compare the reproduction in the linked gist with the StopProcessing behavior described here. Done means event processing no longer remains blocked after the callback throws and StopProcessing can terminate processing as expected.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
devtools, performance
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.