> Dear mod_perl experts:
> 
> Collectively, we've been at this for more than two weeks and have searched
> various mod_perl archives, all to no avail.
> 
> Symptom:
> =======
> SIGSEGV after fork().  Very reproducible.  Memory corruption gets moved
> around if the codebase changes.

[ SNIP ]

The above is the key: moved around.  Therefore, I need Purify or similar
tool.  I'm going to have to go this route, since nobody has any ideas.
Go go gadget purchasing! :(

The only other way I can think of to solve this is to send my module list
to this audience.  Please find it, attached, with home-grown modules
deleted.

More info:

In speaking with Ged (who is very knowledgeable, thanks!), I was led down
a path that caused my server to start (setting PERL_DESTRUCT_LEVEL to 0),
but it doesn't solve the memory corruption that perl_destruct ends up
stumbling on, only hides it. For some reason, in my case, the address of
the PV_sv_undef symbol ends up being the target of my Perl_safesysfree,
below (the xpv_pv address was, for some reason, 0x4046cc18, and that is
the address of the PV_sv_undef symbol).

> Stack Trace:
> ===========
> #0  __pthread_mutex_lock (mutex=0x8bf04999) at mutex.c:99
> #1  0x401b9cc8 in __libc_free (mem=0x4046cc18) at malloc.c:3152
> #2  0x403ce028 in Perl_safesysfree (where=0x4046cc18) at util.c:158
> #3  0x403f20d8 in Perl_sv_clear (sv=0x8198f60) at sv.c:3827
> #4  0x403f2473 in Perl_sv_free (sv=0x8198f60) at sv.c:3950
> #5  0x403f80e1 in do_clean_all (sv=0x8198f60) at sv.c:8411
> #6  0x403e9c5e in S_visit (f=0x403f8094 <do_clean_all>) at sv.c:162
> #7  0x403e9ce2 in Perl_sv_clean_all () at sv.c:193
> #8  0x4038594a in perl_destruct (my_perl=0x809a9a8) at perl.c:665
> #9  0x4035629c in perl_shutdown (s=0x0, p=0x0) at mod_perl.c:294
> #10 0x40356be6 in mp_dso_unload (data=0x808e714) at mod_perl.c:489
> #11 0x08050f34 in run_cleanups (c=0x809c8ac) at alloc.c:1713
> #12 0x0804f5fa in ap_clear_pool (a=0x808e714) at alloc.c:538
> #13 0x08062128 in standalone_main (argc=7, argv=0xbffff294) at
http_main.c:5014 
> #14 0x08062cb2 in main (argc=7, argv=0xbffff294) at http_main.c:5401
> #15 0x40155627 in __libc_start_main (main=0x80627d4 <main>, argc=7, 
>     ubp_av=0xbffff294, init=0x804e3e4 <_init>, fini=0x807aa40 <_fini>, 
>     rtld_fini=0x4000dcd4 <_dl_fini>, stack_end=0xbffff28c)
>     at ../sysdeps/generic/libc-start.c:129
> 
> ***NOTE***  the following gdb session was gleaned from sv.c and refers to
> the freed memory location (0x4046cc18) above:
> 
> (gdb) p *((XPV*)(sv)->sv_any)
> $13 = {xpv_pv = 0x4046cc18 "", xpv_cur = 135562488, xpv_len = 135617180} 

[ SNIP ]

-- 
\_/} Mark P. Fister             Java, Java, everywhere, and all    \_/}
\_/} eBay, Inc.                 the cups did shrink; Java, Java    \_/}
\_/} Austin, TX                 everywhere, nor any drop to drink! \_/}

Attachment: module_list_ulist.txt
Description: Binary data

Reply via email to