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