Store the thread name in a thread_local
variable of type char[]
instead of std::string
. This avoids calling the destructor when the thread exits. This is a workaround for
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=278701
For type-safety, return std::string
from
util::ThreadGetInternalName()
instead of char[]
.
As a side effect of this change, we no longer store a reference to a thread_local
variable in CLockLocation
. This was dangerous because if the thread quits while the reference still exists (in the global variable lock_data
, see inside GetLockData()
) then the reference will become dangling.