On Thu, 24 Jun 2004, Joe Schaefer wrote:
> Stas Bekman <[EMAIL PROTECTED]> writes:
>
> [...]
>
> > I suppose the issue comes from loading APR.so and mod_perl.so at the
> > same time and having the wrong symbol kicking in. It should have
> > picked mod_perl.so's modperl_interp_unselect, not APR.so's one.
>
> This is my concern, too, because on my box, the APR version of
> modperl_interp_unselect is never actually invoked by the test suite.
> Randy, throw in an abort() call like this and see if you get any segfaults
> with the tests.
>
>
> #include <stdlib.h>
>
> /* XXX: provide the missing symbol for APR::Pool as a tmp workaround */
> #ifndef modperl_interp_unselect
> apr_status_t modperl_interp_unselect(void *data) {
> modperl_interp_t *interp = data;
>
> abort(); /* GOT HERE on core dump */
>
> #ifdef USE_ITHREADS
> if (interp->refcnt != 0) {
> --interp->refcnt;
> }
> #endif
> return APR_SUCCESS;
> }
> #endif
That's a good idea - I'll try that tonight, in a few hours,
when I have access to my Win32 machine. But I'm 99% sure
(meaning there's a 50% chance I'm wrong :) that APR/APR::*
are using APR.so's modperl_interp_unselect. The reason for
this is that, on Win32, the symbols specified at link time
are the ones used, and I took out all references to the
mod_perl lib when linking APR/APR::*. So even when
mod_perl.so is loaded in a test, the modperl_interp_unselect
symbol present there is ignored by APR/APR::*.
--
best regards,
randy
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]