On Fri, 17 Feb 2023, 06:40 Alexandre Oliva via Libstdc++, < libstd...@gcc.gnu.org> wrote:
> > Ref: https://gcc.gnu.org/pipermail/gcc-patches/2021-May/570617.html > > Bernd Edlinger <bernd.edlin...@hotmail.de> reported that the 95989.cc > test fails without pthread_join at the end of main, Yes, but that doesn't mean we want to do that. but pthread_join > is no good for a test that doesn't require pthreads. > > This patch adds a __gthread_join call instead. > > Regstrapped on x86_64-linux-gnu. > Tested on arm-vxworks7 (gcc-12) and arm-eabi (trunk). Ok to install? > Nope, the test is correct, if it needs that there's a bug somewhere else. Papering over it in the test doesn't help. Each of test01, test02, and test03 creates a thread, joins it, and returns, which needs to work with no additional code. The change happens to "work" because it causes a non-weak reference to pthread_join, which otherwise doesn't get linked in from libpthread.a on ubuntu. The proper fix is to ensure the program has a non-weak reference to pthread_join without extra help (or use a recent glibc where it always works). > for libstdc++-v3/ChangeLog > > * testsuite/30_threads/jthread/95989.cc (main): Call > __gthread_join at the end. > --- > libstdc++-v3/testsuite/30_threads/jthread/95989.cc | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/libstdc++-v3/testsuite/30_threads/jthread/95989.cc > b/libstdc++-v3/testsuite/30_threads/jthread/95989.cc > index e98836d094531..407b52748438c 100644 > --- a/libstdc++-v3/testsuite/30_threads/jthread/95989.cc > +++ b/libstdc++-v3/testsuite/30_threads/jthread/95989.cc > @@ -52,4 +52,5 @@ main() > test01(); > test02(); > test03(); > + __gthread_join(0, NULL); > } > > -- > Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/ > Free Software Activist GNU Toolchain Engineer > Disinformation flourishes because many people care deeply about injustice > but very few check the facts. Ask me about <https://stallmansupport.org> >