From 526641ceeca12fbaa878401f8e65d17f240a9ae5 Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Tue, 11 Jun 2019 10:50:01 +0300 Subject: [PATCH] Only permit one thread at a time in addFileToTag() When creating packages in parallel, more than one thread can call this at once. As it's modifying global macro state to update file name and line number, things will get garbled if we permit more than one thread. While this is necessary for the above reason, and should fix #742, it shouldn't crash even without this so there's probably something else wrong too. Closes: #742 --- build/pack.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/build/pack.c b/build/pack.c index 447e3ec94..ab72750be 100644 --- a/build/pack.c +++ b/build/pack.c @@ -113,6 +113,8 @@ static rpmRC addFileToTag(rpmSpec spec, const char * file, if (file == NULL) return RPMRC_OK; + #pragma omp critical + { fn = rpmGetPath("%{_builddir}/%{?buildsubdir:%{buildsubdir}/}", file, NULL); f = fopen(fn, "r"); @@ -151,6 +153,7 @@ exit: } free(fn); freeStringBuf(sb); + } /* omp critical */ return rc; } -- 2.22.0