* obv patch: debuginfod concurrency fix
@ 2021-12-08 15:47 Frank Ch. Eigler
0 siblings, 0 replies; only message in thread
From: Frank Ch. Eigler @ 2021-12-08 15:47 UTC (permalink / raw)
To: elfutils-devel
Hi -
Committing as obvious.
Author: Frank Ch. Eigler <fche@redhat.com>
Date: Wed Dec 8 10:20:58 2021 -0500
debuginfod: correct concurrency bug in fdcache metrics
The intern() function called set_metrics() outside a necessary lock
being held. helgrind identified this race condition. No QA impact.
Signed-off-by: Frank Ch. Eigler <fche@redhat.com>
diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index 8c937d6629a3..8cbaa9aa6fd9 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,7 @@
+2021-12-08 Frank Ch. Eigler <fche@redhat.com>
+
+ * debuginfod.cxx (intern): Call set_metrics() holding the fdcache mutex.
+
2021-12-04 Mark Wielaard <mark@klomp.org>
* debuginfod-client.c (debuginfod_query_server): Free winning_headers.
diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx
index 0d3f02978ee2..a26e7e8fce37 100644
--- a/debuginfod/debuginfod.cxx
+++ b/debuginfod/debuginfod.cxx
@@ -1354,8 +1354,8 @@ class libarchive_fdcache
if (verbose > 3)
obatched(clog) << "fdcache interned a=" << a << " b=" << b
<< " fd=" << fd << " mb=" << mb << " front=" << front_p << endl;
+ set_metrics();
}
- set_metrics();
// NB: we age the cache at lookup time too
if (statfs_free_enough_p(tmpdir, "tmpdir", fdcache_mintmp))
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-12-08 15:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-12-08 15:47 obv patch: debuginfod concurrency fix Frank Ch. Eigler
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).