GameTechDev / PresentMon

Capture and analyze the high-level performance characteristics of graphics applications on Windows.
https://game.intel.com/story/intel-presentmon/
MIT License
1.7k stars 155 forks source link

Random crash after a long idle #340

Closed cdjzzzz closed 3 months ago

cdjzzzz commented 3 months ago

Version 2.1.1 After idling, the program will crash randomly. After idling for a long time (6-12 hours), the program will experience random crashes. The crash might occur in this code segment. I installed Presentmon through VCPKG, so I can't see the exact calling stack. After importing the CPP file, it shows up here. image

here is the calling Stack image

It may need to enter a long-term lock screen state or sleep mode, but I'm not too sure about this, but i have do this all the time

planetchili commented 3 months ago

Thank you for your report. It so happens that while working on an upcoming feature we have recently added coordination between the ETW callback thread and the thread that consumes ready frames from the queue.

In doing this we immediately encountered consistent crashes every time the program runs, and investigating we found the race condition that indeed exists in the section of code you show. The race condition there has been addressed, and the underlying design that allowed it to be created in the first time has also been replaces with something more robust.

In the behavior before coordination, the queue is only accessed every 100ms so the chances of a corruption of state were pretty low. I was wondering if anyone had encountered it "in the wild", so thank you again for your report.

The code changes that will likely fix this should make it into the next release, so please let us know if the issue persists after upgrading to that version.

Relates to #317