Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 16 Jul 2010 02:22:09 -0700
From:      Jeremy Chadwick <freebsd@jdc.parodius.com>
To:        Reko Turja <reko.turja@liukuma.net>
Cc:        "Mikhail T." <mi+thun@aldan.algebra.com>, freebsd-stable@freebsd.org, Henrik /KaarPoSoft <henrik@kaarposoft.dk>
Subject:   Re: openldap client GSSAPI authentication segfaults in fbsd8stablei386
Message-ID:  <20100716092209.GA99001@icarus.home.lan>
In-Reply-To: <3FE6787E5CAC4C108C031CA6C8044FE4@rivendell>
References:  <4C3CC831.7040005@kaarposoft.dk> <20100713210729.GA11943@icarus.home.lan> <0228E401B70A4023A6F86A2ADAE59EF9@rivendell> <008D0251AE4F4A2DBAA1369410565B61@rivendell> <20100715162251.GA73929@icarus.home.lan> <20100716083617.GA97981@icarus.home.lan> <3FE6787E5CAC4C108C031CA6C8044FE4@rivendell>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Jul 16, 2010 at 11:56:17AM +0300, Reko Turja wrote:
> Another datapoint that might or might not have some connection with
> the issue is that in _gss_mg_error (m=0x28a86480, maj=851968, min=2)
> at /usr/src/lib/libgssapi/gss_display_status.c
> 
> void
> 232     _gss_mg_error(struct _gss_mech_switch *m, OM_uint32 maj,
> OM_uint32 min)
> 233     {
> 234             OM_uint32 major_status, minor_status;
> 235             OM_uint32 message_content;
> 236             struct mg_thread_ctx *mg;
> 237
> 238             mg = &last_error_context;
> 239
> 240             gss_release_buffer(&minor_status, &mg->maj_error);
> 241             gss_release_buffer(&minor_status, &mg->min_error);
> 242
> 243             mg->mech = &m->gm_mech_oid;
> 244             mg->maj_stat = maj;
> 
> when I give following comands, gdb tells me:
> 
> (gdb) p last_error_context
> Cannot find thread-local variables on this target
> (gdb) p &last_error_context
> Cannot find thread-local variables on this target
> (gdb) p mg
> No symbol "mg" in current context.
> (gdb)

I'm not sure if you're familiar with C or not.

This is because gdb's context is at the wrong frame.  In the backtrace
you provided originally, you'd need to do:

(gdb) frame 2

To look at the variables associated with gss_display_status.c.

last_error_context could be an exported variable (you'd need to look
through the source to find out where it's declared), so you might have
to print it with its source filename referenced.  The print command I
gave you before (p/x filename.c::variable) didn't work, and that's a
surprise since the gdb documentation I read says it should.

Also be aware that mg is a struct, so "p mg" won't tell you much, other
than whether or not it's null.  You're probably more interested in
members of the struct, such as mg->maj_error and mg->min_error, and
other struct members.

-- 
| Jeremy Chadwick                                   jdc@parodius.com |
| Parodius Networking                       http://www.parodius.com/ |
| UNIX Systems Administrator                  Mountain View, CA, USA |
| Making life hard for others since 1977.              PGP: 4BD6C0CB |




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100716092209.GA99001>