Don't rename main thread at process level

Set only the internal name.

Fixes #17036 for both `bitcoind` and `bitcoin-qt`.
pull/17038/head
Wladimir J. van der Laan 5 years ago
parent f4a0d27e85
commit 07e4bdba3b

@ -45,7 +45,7 @@ static bool AppInit(int argc, char* argv[])
bool fRet = false;
util::ThreadRename("init");
util::ThreadSetInternalName("init");
//
// Parameters

@ -416,7 +416,7 @@ int GuiMain(int argc, char* argv[])
std::tie(argc, argv) = winArgs.get();
#endif
SetupEnvironment();
util::ThreadRename("main");
util::ThreadSetInternalName("main");
std::unique_ptr<interfaces::Node> node = interfaces::MakeNode();

@ -60,3 +60,8 @@ void util::ThreadRename(std::string&& name)
SetThreadName(("b-" + name).c_str());
SetInternalName(std::move(name));
}
void util::ThreadSetInternalName(std::string&& name)
{
SetInternalName(std::move(name));
}

@ -10,8 +10,13 @@
namespace util {
//! Rename a thread both in terms of an internal (in-memory) name as well
//! as its system thread name.
//! @note Do not call this for the main thread, as this will interfere with
//! UNIX utilities such as top and killall. Use ThreadSetInternalName instead.
void ThreadRename(std::string&&);
//! Set the internal (in-memory) name of the current thread only.
void ThreadSetInternalName(std::string&&);
//! Get the thread's internal (in-memory) name; used e.g. for identification in
//! logging.
const std::string& ThreadGetInternalName();

Loading…
Cancel
Save