> 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! \_/}
module_list_ulist.txt
Description: Binary data
