Control: reassign -1 libc0.3
Samuel Thibault, le dim. 22 févr. 2026 02:50:16 +0100, a ecrit:
> Control: severity -1 important
>
> Hello,
>
> Mattias Ellert, le dim. 22 févr. 2026 02:14:06 +0100, a ecrit:
> > Severity: serious
>
> Nope, serious bugs are only for release archs
>
> > int main() {
> > std::condition_variable cv;
> > std::mutex mx;
> > std::unique_lock<std::mutex> lk(mx);
> > cv.wait_for(lk, std::chrono::seconds(2));
> > }
> >
> > $ g++ -o wait_for wait_for.cxx
> > $ time ./wait_for
> >
> > real 0m2,002s
> > user 0m0,001s
> > sys 0m0,001s
> >
> > However, when compiled on GNU/Hurd (Debian porterbox exodar.debian.net)
> > it hangs forever and must be forced to quit with ctrl-C.
> >
> > ellert@exodar:~$ g++ -o wait_for wait_for.cxx -pthread
> > ellert@exodar:~$ ./wait_for
>
> It looks like gcc is mixing monotonic and realtime clocks. Notably,
> /usr/include/i386-gnu/c++/15/bits/c++config.h
> shows
>
> /* Defined if clock_gettime has monotonic clock support. */
> /* #undef _GLIBCXX_USE_CLOCK_MONOTONIC */
>
> /* Defined if clock_gettime has realtime clock support. */
> /* #undef _GLIBCXX_USE_CLOCK_REALTIME */
>
> These should get defined to 1.
>
> Possibly that's because _POSIX_TIMERS is still defined to 0, I haven't
> checked what we could be missing for defining it to 1, contribution
> welcome.
I have looked into the standards, AIUI it used to be missing only
monotonic vs realtime, and high-precision, which we both have now, so I
have commited setting _POSIX_TIMERS to 200809 now.
I have pushed to the debian glibc package, gcc will just need to be
rebuilt against version 2.42-14.
Thanks for the investigation and report,
Samuel