Re: [PATCH v2] libtraceevent: avoid racing recursive builds of both libraries
Steven Rostedt <[email protected]> Fri, 29 May 2026 14:07:30 -0400
| Newsgroups | org.kernel.vger.linux-trace-devel |
|---|---|
| Message-ID | <20260529140730.3ea1859b@fedora> |
On Mon, 6 Apr 2026 14:28:55 +0800 CaoRuichuang <[email protected]> wrote: Sorry for the late reply, I've been quite busy on the kernel side of things. > A top-level parallel build currently starts separate recursive makes for > libtraceevent.a and libtraceevent.so. Both sub-makes rebuild the same > object files in the same output directory, which can corrupt the .o > files and make the final link fail with file format errors. > > The src/ Makefile already builds libtraceevent.so as part of the > libtraceevent.a target. Reflect that at the top level too by making the > shared library target depend on the static library target, so parallel > requests for either or both libraries funnel through a single recursive > make. > > This fixes repeated `make -j8`, `make -j8 libs`, and > `make -j8 libtraceevent.a libtraceevent.so` failures in a Linux VM, > where the unfixed tree reproduces the race within a few runs. > > Link: https://bugzilla.kernel.org/show_bug.cgi?id=217428 > Signed-off-by: CaoRuichuang <[email protected]> > --- > Makefile | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/Makefile b/Makefile > index e1a10a0..6649303 100644 > --- a/Makefile > +++ b/Makefile > @@ -211,8 +211,7 @@ libs: libtraceevent.a libtraceevent.so > $(LIBTRACEEVENT_STATIC): force > $(Q)$(call descend,$(src)/src,$@) > > -$(LIBTRACEEVENT_SHARED): force > - $(Q)$(call descend,$(src)/src,libtraceevent.so) > +$(LIBTRACEEVENT_SHARED): $(LIBTRACEEVENT_STATIC) As you state in the change log, "Makefile already builds libtraceevent.so as part of the libtraceevent.a target", wouldn't that mean the above should be: $(LIBTRACEEVENT_STATIC): $(LIBTRACEEVENT_SHARED) $(LIBTRACEEVENT_SHARED): force $(Q)$(call descend,$(src)/src,libtraceevent.so) ?? BTW, thanks for working on this. Sorry I couldn't get to it earlier. -- Steve > > $(bdir)/libtraceevent.so: $(bdir)/libtraceevent.so.$(EP_VERSION) > @ln -sf $(<F) $@