Hi!

Martin Münstermann wrote:
OK, we now have thread compile failure reports on Debian and Slackware.

The config/acx_pthread.m4 script basically tests these:

    acx_pthread_flags=3D"pthreads none -Kthread -kthread lthread -pthread
        -pthreads -mthreads pthread --thread-safe -mt pthread-config"
=09
in that order and exits once it finds the first one that can
compile/link this:

        AC_TRY_LINK([#include <pthread.h>],
                    [pthread_t th; pthread_join(th, 0);
                     pthread_attr_init(0); pthread_cleanup_push(0, 0);
                     pthread_create(0,0,0,0); pthread_cleanup_pop(0); ],
                    [acx_pthread_ok=3Dyes])

Now, the big question is why -pthread can compile/link this successfully
but -pthread isn't enough to build a library that uses threads.


I suspect that on Solaris, without "-lpthread" the pthread-stubs in /usr/lib/libc.so might be called at runtime instead of the functional ones in libpthread.so.

Could this easily be checked?

I can confirm this suspect for Solaris8/gcc 3.2.3. How to reproduce it: Add a line like printf("### NOTE: check_sigpipe_handler called.\n"); to check_sigpipe_handler() in fe-secure.c and rebuild libpq.so.

The line is only dumped out (indicating that check_sigpipe_handler() is being called), when the library is linked with -lpthread.
Without -lpthread no complains from the compiler or linker, but check_sigpipe_handler() is not called, because the stub of pthread_once() in libc.so does nothing.


--> We need -lpthread on solaris, too.

Regards,
 Martin

---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

Reply via email to