Re: Segfault in libthr.so on 9.0-BETA2 (with stunnel FWIW)

From: John Baldwin <jhb_at_freebsd.org>
Date: Wed, 14 Sep 2011 11:45:55 -0400
On Wednesday, September 14, 2011 8:59:53 am Kostik Belousov wrote:
> On Wed, Sep 14, 2011 at 02:36:07PM +0200, Jeremie Le Hen wrote:
> > Hi list,
> > 
> > I've recently migrated my services from a box running 8.1-STABLE to
> > another one running 9.0-BETA2.
> > 
> > I run stunnel 4.28 on 8.1-STABLE, and it has run flawlessly so far.  I
> > compiled manually this very version on 9.0-BETA2.  But I get the
> > following segfault:
> > 
> >     Program received signal SIGSEGV, Segmentation fault.
> >     [Switching to Thread 803008c00 (LWP 100496/stunnel)]
> >     0x000000080110d359 in gmtime_r () from /lib/libc.so.7
> >     (gdb) thread
> >     [Current thread is 3 (Thread 803008c00 (LWP 100496/stunnel))]
> >     (gdb) bt
> >     #0  0x000000080110d359 in gmtime_r () from /lib/libc.so.7
> >     #1  0x000000080110cdde in gmtime_r () from /lib/libc.so.7
> >     #2  0x000000080110dab4 in gmtime_r () from /lib/libc.so.7
> >     #3  0x000000080110dcc8 in gmtime_r () from /lib/libc.so.7
> >     #4  0x0000000800e1d9e8 in pthread_once () from /lib/libthr.so.3
> >     #5  0x000000080110ca9f in timegm () from /lib/libc.so.7
> >     #6  0x0000000805dff8d9 in OPENSSL_gmtime () from /usr/local/lib/libcrypto.so.7
> >     #7  0x0000000805e74631 in ASN1_UTCTIME_adj () from /usr/local/lib/libcrypto.so.7
> >     #8  0x0000000805e9462d in X509_time_adj_ex () from /usr/local/lib/libcrypto.so.7
> >     #9  0x0000000805e9478c in X509_cmp_time () from /usr/local/lib/libcrypto.so.7
> >     #10 0x0000000805e9496d in internal_verify () from /usr/local/lib/libcrypto.so.7
> >     #11 0x0000000805e95f46 in X509_verify_cert () from /usr/local/lib/libcrypto.so.7
> >     #12 0x0000000805b7f4c8 in ssl_verify_cert_chain () from /usr/local/lib/libssl.so.7
> >     #13 0x0000000805b5d6e3 in ssl3_get_client_certificate () from /usr/local/lib/libssl.so.7
> >     #14 0x0000000805b612bc in ssl3_accept () from /usr/local/lib/libssl.so.7
> >     #15 0x0000000000406f6e in init_ssl (c=0x803093000) at client.c:329
> >     #16 0x00000000004069a6 in do_client (c=0x803093000) at client.c:202
> >     #17 0x000000000040676b in run_client (c=0x803093000) at client.c:150
> >     #18 0x00000000004066cf in client (arg=0x803093000) at client.c:123
> >     #19 0x0000000800e18224 in pthread_getprio () from /lib/libthr.so.3
> >     #20 0x0000000000000000 in ?? ()
> > 
> > 
> > Note that I tried with the newest version of stunnel, it crashes at the
> > same place.  I also tried libssl.so both from the base system and from
> > the ports, same thing.
> 
> You need to compile both libc and libthr with debugging symbols and
> do a backtrace with such libraries.

You really only need symbols from libc.  timegm() probably inlines time1()
and maybe even gmtsub() which calls pthread_once() to invoke the static
routine gmt_init() in src/lib/libc/stdtime/localtime.c.

I wonder if this is similar to the crashes seen in cvsup when parsing
/usr/share/zoneinfo/UTC (as gmt_init() is going to parse
/usr/share/zoneinfo/UTC as well).

-- 
John Baldwin
Received on Wed Sep 14 2011 - 13:45:58 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:17 UTC