mirror of
https://github.com/NixOS/nix
synced 2025-06-26 07:31:15 +02:00
Add some instrumentation for debugging GC leaks
This commit is contained in:
parent
d37d012774
commit
6e5b02bee4
4 changed files with 59 additions and 0 deletions
|
@ -230,6 +230,8 @@ EvalState::EvalState(const Strings & _searchPath)
|
|||
|
||||
EvalState::~EvalState()
|
||||
{
|
||||
fileEvalCache.clear();
|
||||
printCanaries();
|
||||
}
|
||||
|
||||
|
||||
|
@ -1464,4 +1466,24 @@ void EvalState::printStats()
|
|||
}
|
||||
|
||||
|
||||
void EvalState::printCanaries()
|
||||
{
|
||||
#if HAVE_BOEHMGC
|
||||
if (!settings.get("debug-gc", false)) return;
|
||||
|
||||
GC_gcollect();
|
||||
|
||||
if (gcCanaries.empty()) {
|
||||
printMsg(lvlError, "all canaries have been garbage-collected");
|
||||
return;
|
||||
}
|
||||
|
||||
printMsg(lvlError, "the following canaries have not been garbage-collected:");
|
||||
|
||||
for (auto i : gcCanaries)
|
||||
printMsg(lvlError, format(" %1%") % i->string.s);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue