Assertion failuers
Ken Raeburn
raeburn at MIT.EDU
Thu Jul 7 22:37:52 EDT 2005
On Jul 7, 2005, at 17:46, Phil Dibowitz wrote:
> Things worked well, except that on Solaris 2.6, several applications,
> including openssh and a homegrown app through this:
>
> Assertion failed: i->did_run != 0, file
> ../../../../src/lib/krb5/../../include/k5-platform.h, line 232
>
> And for reference, that's:
>
> static inline int k5_call_init_function(k5_init_t *i)
> {
> int err;
> err = k5_once(&i->once, i->fn);
> if (err)
> return err;
> assert (i->did_run != 0);
> return i->error;
> }
Depending on the configuration properties and options, a couple of
things are likely to be happening here:
* initializers are set up to run when the shared library is loaded
because of configure options, and it's not happening, or the various
initializers aren't running in the order expected, so one runs and
tries to use some other interface that was supposed to have been
initialized already but wasn't
* initializers are running via pthread_once, but somehow you've got a
version of pthread_once that never calls the supplied function (some OS
vendors seem to think this is a reasonable thing to put in libc for
when you don't link in the pthread library, but it's not really POSIX
compliant, which would require that either the function be present and
behave correctly, or that it not be present)
Without a bit more data, it's hard to tell. Do these applications link
against the pthread library? Did you give any interesting options when
configuring the Kerberos code? What did configure report when it went
looking for pthread_once?
> Anyone have any ideas? Note that solaris 2.6 is the ONLY version that
> runs
> this - and we have two servers we haven't been able to upgrade yet...
We haven't got Solaris 2.6 installed anywhere any more for testing...
Ken
More information about the Kerberos
mailing list