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

Or

    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).

Thanks,

David

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

Reply via email to