bird & pthreads
David Petera
david.petera at nic.cz
Wed Oct 1 11:12:26 CEST 2025
Hello Alexander, nice catch!
I have put it in our internal issues and the team will fix it for future
versions of BIRD.
Thanks a lot for the find and have a good rest of the week,
David
David Petera (he/him) | BIRD Tech Support | CZ.NIC, z.s.p.o.
On 9/30/25 21:41, Alexander Zubkov via Bird-users wrote:
> Hi all!
>
> I've accidentally found a "mistake" in lib/timer.c (master branch).
> Mistake in quotes, because it is rather a configuration mistake, as I
> found later. There is a function prototype definition inside "#ifdef
> USE_PTHREADS", which is then used outside of it, but in "#ifdef
> CONFIG_BFD":
>
> #ifdef USE_PTHREADS
> ...
> void wakeup_kick_current(void);
> #else
> ...
> #endif
> ...
> void
> tm_set(timer *t, btime when)
> {
> ...
> #ifdef CONFIG_BFD
> /* Hack to notify BFD loops */
> if ((loop != &main_timeloop) && (t->index == 1))
> wakeup_kick_current();
> #endif
> }
>
> So in case USE_PTHREADS is not defined and CONFIG_BFD is defined, the
> compilation would fail with implicit function declaration error. It
> could be reproduced with:
>
> ./configure --disable-pthreads --with-protocols=bfd
> make
> ...
> lib/timer.c: In function 'tm_set':
> lib/timer.c:165:5: error: implicit declaration of function
> 'wakeup_kick_current' [-Wimplicit-function-declaration]
> 165 | wakeup_kick_current();
> | ^~~~~~~~~~~~~~~~~~~
> make: *** [Makefile:115: obj/lib/timer.o] Error 1
>
> But even moving that function prototype out of "#ifdef USE_PTHREADS"
> does not help. It then fails on proto/bfd/io.c using undefined
> references, because it uses pthreads unconditionally.
>
> I think it would be better to fail on "configure" stage with a
> meaningful message that bfd requires pthreads. I see there is now only
> a workaround to exclude bfd from the default set of protocols if
> pthreads is not enabled. I've made some patch that shows an error if
> bfd is enabled and pthreads support is disabled.
>
> Regards,
> Alexander Zubkov
More information about the Bird-users
mailing list