Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cherry-pick b341c44: Fix ETW trace logging crash in multithreading situations (#21566) #22430

Open
wants to merge 3 commits into
base: rel-os-1.19.2
Choose a base branch
from

Conversation

aamajumder
Copy link
Contributor

Description

ETW trace logger is fakely registered as initialized_ is marked as true before the registration is done, causing crashing issue for Lenovo camera application.

A prior attempt to address was made here:
#21226 It was reverted here:
#21360

Motivation and Context

The problem is that during initialization of TraceLoggingRegisterEx, it will reinvoke the callback and attempt reinitialization, which is not allowed. TraceLoggingRegisterEx however can be initialized concurrently when initialization happens on multiple threads. For these reasons it needs to be protected by a lock, but the lock cannot naively block because the callback's reinvocation will cause a deadlock.

To solve this problem another tracking variable is added : "initializing" which protects against reinitialization during the first initialization.


Description

Motivation and Context

### Description
ETW trace logger is fakely registered as initialized_ is marked as true
before the registration is done, causing crashing issue for Lenovo
camera application.

A prior attempt to address was made here:
#21226
It was reverted here:
#21360

### Motivation and Context
The problem is that during initialization of TraceLoggingRegisterEx, it
will reinvoke the callback and attempt reinitialization, which is not
allowed. TraceLoggingRegisterEx however can be initialized concurrently
when initialization happens on multiple threads. For these reasons it
needs to be protected by a lock, but the lock cannot naively block
because the callback's reinvocation will cause a deadlock.

To solve this problem another tracking variable is added :
"initializing" which protects against reinitialization during the first
initialization.

---------

Co-authored-by: Sheil Kumar <[email protected]>
@aamajumder aamajumder requested review from fdwr and martinb35 October 15, 2024 18:32
martinb35
martinb35 previously approved these changes Oct 16, 2024
…#21902)

### Description
Catch in etw_sink.cc is causing build failures for flavors with EHsc
disabled.
Remove the catch and set the Failure state as a response the FAILED
check.


### Motivation and Context
Catch in etw_sink.cc is causing build failures for flavors with EHsc
disabled.

---------

Co-authored-by: Sheil Kumar <[email protected]>
smk2007
smk2007 previously approved these changes Oct 18, 2024
fdwr
fdwr previously approved these changes Oct 19, 2024
@aamajumder aamajumder dismissed stale reviews from fdwr and smk2007 via 7da1fbc October 21, 2024 22:53
@fdwr
Copy link
Contributor

fdwr commented Oct 23, 2024

@smk2007 Needs a 2nd approving review into release branches.

@fdwr
Copy link
Contributor

fdwr commented Oct 26, 2024

Restarted CI, but some of these failures have nothing to do with DML?? "MacOS CI Pipeline" Any thoughts @smk2007?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants