You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe your environment.
Reproduced on Windows 11, Solutions/version.txt is 3.6.999.1
Steps to reproduce.
This is a race condition that is a bit tricky to reproduce and as consequence not easy.
Create an object that holds an instance of the logmanager (Do not use the singleton/global instance) and during the destructor calls UploadNow()
Create a shared pointer instance of a that class
Create a thread that gets an instance of that ptr (we should have the atomic counter value to two).
Ensure that thread outlives Main.
We need to reproduce the following.
Main finishes. (Our object should have atomic counter to 1)
Singletons clean up process starts, destroying any 1ds internal shaningans
Thread finishes and sets the object count to 0 calling its destructor.
Destructor calls logmanager->Uploadnow()
Crashes
What is the expected behavior?
Internal constructs of 1ds should be bound to lifecycle of the loggers not the process. The process should control the lifecycle of the logger.
What is the actual behavior?
Process crashes at shutdown
Hi jpalmaduran, This is likely mitigated by #1520: the factory and PAL singletons now remain valid throughout process teardown, avoiding a destruction-order use-after-free when a log manager is used late; SQLite storage also receives explicit/destructor shutdown cleanup. This matches the reported late UploadNow() scenario, but we have not reproduced the exact thread-outliving-main crash. Closing as likely addressed; please reopen with a current stack trace if it persists.
Activity
jpalmaduran commentedon May 31, 2023
Adding up to where I can add in the stack trace:
bmehta001 commentedon Sep 24, 2026
Hi jpalmaduran, This is likely mitigated by #1520: the factory and PAL singletons now remain valid throughout process teardown, avoiding a destruction-order use-after-free when a log manager is used late; SQLite storage also receives explicit/destructor shutdown cleanup. This matches the reported late
UploadNow()scenario, but we have not reproduced the exact thread-outliving-main crash. Closing as likely addressed; please reopen with a current stack trace if it persists.