Hi,
I built exim 4.62 with libspf2-1.2.5. That version of libspf2 uses pthreads,
how or why i'm not sure. But the result of linking it with exim is that
_res() which exim uses and which is a macro for __res_state on NetBSD 3.0
ends up using the __res_state function in libpthreads which calls abort()
cos it's not thread safe.
It also prints an error message to stderr, which is helpful cos fd 2 is
/dev/null when exim is running as a daemon :(
The attached patch uses __res_get_state and __res_put_state instead, which
works for me.
I appreciate this the whole resolver api is a portability nightmare,
but at least this will sitin the list archives if someone else goes looking
--
[http://pointless.net/] [0x2ECA0975]
I built exim 4.62 with libspf2-1.2.5. That version of libspf2 uses pthreads,
how or why i'm not sure. But the result of linking it with exim is that
_res() which exim uses and which is a macro for __res_state on NetBSD 3.0
ends up using the __res_state function in libpthreads which calls abort()
cos it's not thread safe.
It also prints an error message to stderr, which is helpful cos fd 2 is
/dev/null when exim is running as a daemon :(
The attached patch uses __res_get_state and __res_put_state instead, which
works for me.
I appreciate this the whole resolver api is a portability nightmare,
but at least this will sitin the list archives if someone else goes looking
--
[http://pointless.net/] [0x2ECA0975]