[krbdev.mit.edu #7860] libdb2 tests hang

Tom Yu via RT rt-comment at krbdev.mit.edu
Mon Feb 17 20:39:29 EST 2014


"Greg Hudson via RT" <rt-comment at krbdev.mit.edu> writes:

> Through a combination of debugging and googling, I believe the picture 
> is this:
>
> * The optimizer in gcc 4.8 breaks the BSD CIRCLEQ macros by optimizing 
> out some of the conditionals.  This is either due to a strict aliasing 
> violation in the CIRCLEQ macros or a compiler bug; at this time I'm not 
> sure which.
>
> * As a result, one of the mpool buckets becomes an infinite linked list, 
> causing mpool_look() to iterate forever.
>
> * The response to gcc 4.8 in OpenBSD (and I think also FreeBSD) has been 
> to stop using the CIRCLEQ macros in favor of TAILQ.  It's not clear to 
> me yet whether the TAILQ macros are better or worse in terms of strict 
> aliasing violations, but gcc isn't known to have broken them yet.
>
> * mpool structures are managed out of process memory, not mmapped 
> memory, so we are free to make any changes we want to them.  Converting 
> them from CIRCLEQ to TAILQ should be pretty easy if that turns out to be 
> the best answer.
>
> The thread starting at
> http://mail-index.netbsd.org/tech-kern/2013/11/20/msg016059.html
> has the most in-depth discussion I was able to find.

Thanks for tracking this down.  The CIRCLEQ macros have always made me
nervous with their weird (and probably undefined) casting.



More information about the krb5-bugs mailing list