segfaulting on startup

Russ Allbery rra at
Tue Mar 12 23:30:10 UTC 2002

Jeffrey M Vinocur <jeff at> writes:

> With much help from Zack, I found it.  If the Perl headers redefine bool
> (which they do), then any struct (say SITE) which has enough consecutive
> bools that alignment concerns allow them to be compressed (if, say, bool
> is char) is going to be horribly broken if the header file which
> included it is sometimes used with one kind of bool and sometimes with
> another.

Ah!  That makes a great deal of sense.

> On the plus side, it's our own fault, I guess.  Glancing through the
> Perl headers it seems that we're supposed to define HAS_BOOL.  (And in
> fact, doing that in innperl.h fixes the problem for me.)

> So Russ -- if you're happy with your changes, good.

I think I'm happy with the current approach; perl.h pulls in a whole mess
of namespace pollution that I'm not happy with including everywhere
innperl.h is included.  But what I may do instead is drop any pretense of
using the standard version of ppport.h and instead have it include the
Perl headers with fixes like that.

> If there's anything that you'd like to further clean up, the trick is
> just to define HAS_BOOL.  In fact, that's probably very wise to do
> before including the Perl headers you want to, or should I
> look into it?

I'll take a look at it sometime fairly soon.

> (Amusingly enough, if you google for HAS_BOOL you mostly get Russ
> talking about INN's bool type.)

Yeah, now I understand why inn/defines.h was defining HAS_BOOL.  Actually,
let me go add that back in for the short term to avoid any problems until
we figure out how we want to do this long-term.

Russ Allbery (rra at             <>

    Please send questions to the list rather than mailing me directly.
     <> explains why.

More information about the inn-workers mailing list