Re: Fix race with LLVM and bison. - Mailing list pgsql-hackers

From Andres Freund
Subject Re: Fix race with LLVM and bison.
Date
Msg-id v67jke2iv6kaywjnvwhxc3u5x3ttvrz555k5ngcxu2qwu435rl@5wpsxnrsz23k
Whole thread
In response to Fix race with LLVM and bison.  ("Maksim.Melnikov" <m.melnikov@postgrespro.ru>)
Responses Re: Fix race with LLVM and bison.
Re: Fix race with LLVM and bison.
List pgsql-hackers
Hi,

On 2026-03-27 14:31:52 +0300, Maksim.Melnikov wrote:
> I've found build error in configuration --with-llvm
> 
> CPPFLAGS="-O2" ./configure --enable-debug --enable-cassert
> --enable-tap-tests --with-openssl --with-icu  --with-llvm
> 
> ....
> 
> make world-bin -j3
> 
> ....
> 
> cubescan.c:9:10: fatal error: 'cubeparse.h' file not found
>     9 | #include "cubeparse.h"  /* must be after cubedata.h for YYSTYPE and
> NDBOX */
> 
> ....
> segscan.c:9:10: fatal error: 'segparse.h' file not found
>     9 | #include "segparse.h"   /* must be after segdata.h for SEG */
> 
> 
> The reason is race, that exist between LLVM compilation and bison source
> code generation and compilation can occur first.
> 
> Ideally LLVM compilation target should depend on header files targets.
> 
> The error is difficult to reproduce and I've done simple patch to have
> stable reproducing. Fix patch is also attached.

You don't need a sleep to show there's a problem, you can just do
   make -C contrib/cube cubescan.bc

We don't have the same issue in the backend, as for backend code each .bc file
depends on the .o file:

src/backend/common.mk:

ifeq ($(with_llvm), yes)
objfiles.txt: $(patsubst %.o,%.bc, $(OBJS))
$(patsubst %.o,%.bc, $(OBJS)): $(OBJS)
endif

But for some reason I didn't add the same logic to pgxs.mk.

I think we need something like the attached to make the dependencies work.


I'm a bit worried about breaking some extensions if were to backpatch this. So
I'm somewhat inclined to just fix this in master.

Greetings,

Andres Freund

Attachment

pgsql-hackers by date:

Previous
From: KAZAR Ayoub
Date:
Subject: Re: Speed up COPY TO text/CSV parsing using SIMD
Next
From: Tom Lane
Date:
Subject: Re: add function argument name to substring and substr