Tuesday 17 April 2018

hidden symbol `pthread_atfork' in /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a(pthread_atfork.oS) is referenced by DSO

Hi,

yesterday evening, and today, I upgraded a bionic container where I was building the nvml packages, and to my surprise a build that worked last thursday stopped working today:

make[3]: Entering directory '/home/ubuntu/nvdimm/nvml/nvml-git/src/examples/librpmem'
cc -o manpage manpage.o -Wl,-rpath=../../debug -L../../debug  -lrpmem -pthread -lfabric
/usr/bin/x86_64-linux-gnu-ld: manpage: hidden symbol `pthread_atfork' in /usr/lib/x86_64-linux-gnu/libpthread_nonshared.a(pthread_atfork.oS) is referenced by DSO
/usr/bin/x86_64-linux-gnu-ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
../Makefile.inc:126: recipe for target 'manpage' failed
make[3]: *** [manpage] Error 1



The packages I upgraded/installed/removed today are https://pastebin.ubuntu.com/p/mGFSdBPhNc/


The same cc line worked there:
$ grep -E "Entering directory.*src/examples/librpmem" -A 2 buildlog_ubuntu-bionic-amd64.nvml_1.3.1-0ubuntu1_ppa16_BUILDING.txt 
make[5]: Entering directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
rm -f *.o 
make[5]: Leaving directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
--
make[5]: Entering directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
rm -f *.o 
make[5]: Leaving directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
--
make[5]: Entering directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
cc -c -o basic.o -std=gnu99 -ggdb -Wall -Werror -Wmissing-prototypes  -I../../include -I. -I../../examples basic.c
make[5]: Leaving directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
--
make[5]: Entering directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
cc -c -o manpage.o -std=gnu99 -ggdb -Wall -Werror -Wmissing-prototypes  -I../../include -I. -I../../examples manpage.c
make[5]: Leaving directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
--
make[5]: Entering directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
cc -o basic basic.o -Wl,-rpath=../../debug -L../../debug  -lrpmem -pthread -lfabric
make[5]: Leaving directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
--
make[5]: Entering directory '/<<PKGBUILDDIR>>/src/examples/librpmem'
cc -o manpage manpage.o -Wl,-rpath=../../debug -L../../debug  -lrpmem -pthread -lfabric
make[5]: Leaving directory '/<<PKGBUILDDIR>>/src/examples/librpmem'


Any hints about what changed? Was this build relying on a bug before, that got fixed now? Or was this a post-beta-freeze incompatible change?