On Fri, 26 Sep 2003, Stas Bekman wrote:

> [picking up an old thread, giving it a better subject]
>
> >> On Sat, 23 Aug 2003, Stas Bekman wrote:
> >>> Randy, back to the drawing board. Can you try this patch
> >>> (you will need to rerun t/TEST -conf). This is regarding
> >>> the win32 issue you had with this change:
> >>> http://cvs.apache.org/viewcvs.cgi/modperl-2.0/t/conf/modperl_extra.pl.diff?r1=1.24&r2=1.25&diff_format=h
> >>>
> >>> I have restored it now in a separate vhost. I'm not sure
> >>> though if I have reproduced the problem as it was
> >>> originally. Hope you remember what was it.
> >>
> >> Thanks, Stas - that seems to have reproduced the problem; I
> >> get a "free to wrong pool 13ca860 not 26d4c8" message, then
> >> an unhandled exception in Apache.exe (Perl58.dll) regarding
> >> an access violation. I'll have to build a perl with
> >> debugging to get further - I'm in the middle of switching to
> >> 5.8.1-tobe.
> >
> > Great, thanks Randy! Looking forward to getting it resolved. However if
> > you are busy with other more urgent things, do them first. We will
> > commit this new test when you will get a chance to debug the problem.
>
> In the light of recent changes in pools, does this make any difference to the
> early startup in a vhost issue? Here is the patch again:
> http://marc.theaimsgroup.com/?l=apache-modperl-dev&m=106166256116212&w=2

Hi Stas,
    Unfortunately, not. Without the above patch I got all
tests to pass, but with it, I get a "free to wrong pool ..",
coming from about line 1121 of perl-5.8.1/win32/vmem.h.
I imagine you're busy now, so we can look at this later,
but the problem comes in the VMem::Free() of win32/vmem.h:

================================================================
void VMem::Free(void* pMem)
{
#ifdef _USE_LINKED_LIST
    if (pMem) {
        PMEMORY_BLOCK_HEADER ptr = 
(PMEMORY_BLOCK_HEADER)(((char*)pMem)-sizeof(MEMORY_BLOCK_HEADER));
        if (ptr->owner != this) {
            if (ptr->owner) {
#if 1
                dTHX;
                int *nowhere = NULL;
                Perl_warn(aTHX_ "Free to wrong pool %p not %p",this,ptr->owner);
                *nowhere = 0;
#else
                ptr->owner->Free(pMem);
#endif
            }
            return;
        }
        GetLock();
        UnlinkBlock(ptr);
        ptr->owner = NULL;
        m_pfree(ptr);
        FreeLock();
    }
#else
    m_pfree(pMem);
#endif
}
================================================================
and, in the debugger, the "ptr" symbol can't be found (pMem
is). I'll try to look into this further - in the meantime,
here's a stacktrace:
=================================================================
VMem::Free(VMem * const 0x013567e8, void * 0x013464c4) line 208
PerlMemFree(IPerlMem * 0x012fe1b4, void * 0x013464c4) line 302
Perl_safesysfree(void * 0x013464c4) line 143 + 14 bytes
Perl_sv_clear(interpreter * 0x0026ee24, sv * 0x00000000) line 5197
Perl_sv_replace(interpreter * 0x0026ee24, sv * 0x008b3db8, sv * 0x0133573c) line 5048
Perl_leave_scope(interpreter * 0x0026ee24, long 290) line 695 + 11 bytes
Perl_newATTRSUB(interpreter * 0x013680f4, long 290, op * 0x0134f0b4, op * 0x00000000, 
op * 0x013680f4, op * 0x0134f0d4) line 4402 + 22 bytes
Perl_utilize(interpreter * 0x28029afb, int 0, long 20348780, op * 0x00000122, op * 
0x00000000, op * 0x0134f270) line 3002
Perl_yyparse(interpreter * 0x2803974a) line 414 + 21 bytes
S_doeval(interpreter * 0x0134f330, int 0, op * * 0x00000000, cv * 0x00000000, unsigned 
long 8360) line 2802 + 6 bytes
Perl_pp_require(interpreter * 0x00901ad4) line 3298 + 58 bytes
modperl_pp_require(interpreter * 0x0026ee24) line 54 + 10 bytes
Perl_runops_standard(interpreter * 0x0026ee24) line 23 + 12 bytes
S_call_body(interpreter * 0x0026ee24, op * 0x0006f960, int 1) line 2193 + 7 bytes
Perl_eval_sv(interpreter * 0x0026ee24, sv * 0x013375e0, long 2) line 2274 + 13 bytes
modperl_require_module(interpreter * 0x0026ee24, const char * 0x011924e0, int 0) line 
13 + 15 bytes
modperl_cmd_modules(cmd_parms_struct * 0x0006fa88, void * 0x00851f50, const char * 
0x011924e0) line 122 + 15 bytes
invoke_cmd(const command_struct * 0x6ff02358, cmd_parms_struct * 0x1001c528, void * 
0x0006fa88, const char * 0x00851f50) line 800 + 10 bytes
ap_walk_config_sub(const ap_directive_t * 0x6ff022d5, cmd_parms_struct * 0x01192338, 
ap_conf_vector_t * 0x0006fa88) line 1082 + 12 bytes
ap_walk_config(ap_directive_t * 0x100059aa, cmd_parms_struct * 0x01192338, 
ap_conf_vector_t * 0x0006fa88) line 1121 + 11 bytes
modperl_config_insert(interpreter * 0x0134fc44, server_rec * 0x0082a390, apr_pool_t * 
0x0026a7e8, apr_pool_t * 0x00000000, int 150, char * 0x00000000, ap_conf_vector_t * 
0x0082a960, sv * 0x01436e54) line 443 + 18 bytes
modperl_config_insert_server(interpreter * 0x0134fc44, server_rec * 0x0082a390, sv * 
0x01436e54) line 461 + 36 bytes
XS_Apache__Server_add_config(interpreter * 0x0134fc44, cv * 0x0139a350) line 99 + 17 
bytes
Perl_pp_entersub(interpreter * 0x0134fc44) line 2820
Perl_runops_standard(interpreter * 0x0134fc44) line 23 + 12 bytes
S_call_body(interpreter * 0x0134fc44, op * 0x0006fc08, int 1) line 2193 + 7 bytes
Perl_eval_sv(interpreter * 0x0134fc44, sv * 0x0135d908, long 2) line 2274 + 13 bytes
Perl_require_pv(interpreter * 0x0134fc44, const char * 0x00887530) line 2353
modperl_require_file(interpreter * 0x0134fc44, const char * 0x00887530, int 1) line 30 
+ 13 bytes
modperl_config_apply_PerlRequire(server_rec * 0x00886638, modperl_config_srv_t * 
0x00887058, interpreter * 0x0134fc44, apr_pool_t * 0x0026a7e8) line 357 + 21 bytes
modperl_startup(server_rec * 0x00886638, apr_pool_t * 0x0026a7e8) line 285 + 21 bytes
modperl_init_vhost(server_rec * 0x00886638, apr_pool_t * 0x0026a7e8, server_rec * 
0x0082a390) line 355 + 13 bytes
modperl_init(server_rec * 0x0082a390, apr_pool_t * 0x0026a7e8) line 431 + 17 bytes
modperl_hook_init(apr_pool_t * 0x0026a7e8, apr_pool_t * 0x00000000, apr_pool_t * 
0x00000000, server_rec * 0x0082a390) line 554 + 13 bytes
modperl_run() line 568 + 21 bytes
modperl_cmd_load_module(cmd_parms_struct * 0x0006fec0, void * 0x00851f50, const char * 
0x00861840) line 503
invoke_cmd(const command_struct * 0x6ff02358, cmd_parms_struct * 0x1001c6a8, void * 
0x0006fec0, const char * 0x00851f50) line 713 + 14 bytes
ap_walk_config_sub(const ap_directive_t * 0x6ff022d5, cmd_parms_struct * 0x00861820, 
ap_conf_vector_t * 0x0006fec0) line 1082 + 12 bytes
ap_walk_config(ap_directive_t * 0x6ff032e3, cmd_parms_struct * 0x00852220, 
ap_conf_vector_t * 0x0006fec0) line 1121 + 11 bytes
ap_process_config_tree(server_rec * 0x0082a390, ap_directive_t * 0x00852220, 
apr_pool_t * 0x0026a7e8, apr_pool_t * 0x0084a108) line 1594 + 35 bytes
main(int 4201858, const char * const * 0x00000008) line 582
APACHE! mainCRTStartup + 227 bytes
KERNEL32! 77e7eb69()
===================================================================

-- 
best regards,
randy

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to