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

Fix ETW trace logging crash in multithreading situations (#21566) #21603

Merged
merged 4 commits into from
Aug 9, 2024

Commits on Aug 2, 2024

  1. Fix ETW trace logging crash in multithreading situations (#21566)

    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
    
    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]>
    smk2007 and Sheil Kumar committed Aug 2, 2024
    Configuration menu
    Copy the full SHA
    029368a View commit details
    Browse the repository at this point in the history

Commits on Aug 8, 2024

  1. Configuration menu
    Copy the full SHA
    5ce7e77 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    01ee5b0 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    e7d1be0 View commit details
    Browse the repository at this point in the history