perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David E. Wheeler" <>
Subject Re: Build Failure on Perl 5.12 RC3
Date Tue, 06 Apr 2010 05:45:54 GMT
On Apr 5, 2010, at 6:20 PM, Fred Moyer wrote:

> Builds ok here on OS X 10.6.3 (tests don't start yet though).  Wonder
> what the difference in our setups 

Okay, Fred and I have been hacking on this for a few hours, and thanks to a tip from Stefan
O'Rear on #p5p, we've been able to trace the basic problem.

I can get mod_perl2 to build with Perl configured with:

    sh Configure -des -Duseshrplib


    sh Configure -des -Duseshrplib -Dusemultiplicity -Duseithreads

But not

    sh Configure -des -Duseshrplib -Dusemultiplicity

That is, mod_perl will build with both multiplicity and ithreads or with neither, but not
with multiplicity only. With multiplicity-only, I get:

    mod_perl.c: In function ‘modperl_shutdown’:
    mod_perl.c:62: error: ‘my_perl’ undeclared (first use in this function)
    mod_perl.c:62: error: (Each undeclared identifier is reported only once
    mod_perl.c:62: error: for each function it appears in.)

Fred says this is the relevant code:

    #ifndef USE_ITHREADS
    static apr_status_t modperl_shutdown(void *data)
        modperl_cleanup_data_t *cdata = (modperl_cleanup_data_t *)data;
        PerlInterpreter *perl = (PerlInterpreter *)cdata->data;
        void **handles;
        handles = modperl_xs_dl_handles_get(aTHX);

And what Stefan says is: “you need to change your function declaration from ...(void *arg)
to ...(pTHX_  void *arg)”.

I believe Fred managed to get past some of these errors by doing something like this. Fred,
can you confirm?

So there you have it. If you build perl with

    sh Configure -des -Duseshrplib -Dusemultiplicity

and build mod_perl 2 against that, you should be able to replicate this issue.

Anyone familiar with this stuff and able to fix? I'd love to see mod_perl 2.05 drop when Perl
5.12.0 final drops (next week, I believe).



PS: I think the apreq stuff needs to be hit with the same multiplicity cluestick -- anyone
know that code?

View raw message