On Thu, 24 Jun 2004, Stas Bekman wrote:
[ ... ]
> But which of the apr-ext tests happen to select
> interpreters at all? Can you find out why did you need
> that workaround. It's quite possible that your patch is
> the right thing to do, but I made it a no-op since I
> didn't see why would you want to unselect it at all.
Actually, without the workaround, the apr-ext tests all pass
for me, when run by themselves. The problem arose in the
other tests - running 'nmake test' first encounters a
problem with t/apache/discard_rbody hanging. But others
hang as well when the order of the tests is changed.
> 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.
I think that's what's happening - it's picking up APR.so's
modperl_interp_unselect everywhere for all APR/APR::*
modules. This is because I did away with linking to
mod_perl.so for all APR::* modules, including APR itself -
if not, if mod_perl.so provides any symbols at all at link
time, using APR and/or APR::* will demand that mod_perl.so
be available.
> If you can't control that, the right solution is to move
> modperl_interp_unselect into the common area, instead of
> duplicating it. Notice that I added that workaround
> before we did the split, so it's probably the right thing
> to do in any case.
Just so I understand correctly, does that mean to remove
modperl_interp_unselect from both xs/APR/APR/APR.xs and
src/modules/perl/modperl_interp.c, and instead put in
===================================================================
apr_status_t modperl_interp_unselect(void *data)
{
#ifdef USE_ITHREADS
modperl_interp_t *interp = (modperl_interp_t *)data;
if (interp->refcnt != 0) {
--interp->refcnt;
}
#endif /* USE_ITHREADS */
return APR_SUCCESS;
}
#endif /* modperl_interp_unselect */
===================================================================
into something like src/modules/perl/modperl_common_util.c?
And since this needs modperl_interp_t, move the declaration
of this from src/modules/perl/modperl_types.h into
src/modules/perl/modperl_common_types.h?
I noticed that modperl_interp_unselect is also used within
src/modules/perl/mod_perl.c - if the above is correct, will
that change affect anything there?
--
best regards,
randy
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]