Hello, We began to encounter some odd segfaults, and after poking through mod_perl believed that we have found the problem. The DESTROY() function in Table.xs is not honoring the read only flag in "self", which would seem to be a bug.
For reasons we are still trying to discover (;>), it's being called and asked to delete some sort of shared, read-only object (probably belonging to Apache?). We only saw this happen intermittently, and under very high load. The attached patch was written by Erik Arneson ([EMAIL PROTECTED]). So, is this an actual bug or is it more likely that we're in some way horribly abusing mod_perl (or is it both ;>)? Thank you all very much, _Jesse Williamson ;-};
--- apache_1.3.26/mod_perl-1.27/src/modules/perl/Table.xs.table Tue Dec 10 11:55:24 2002 +++ apache_1.3.26/mod_perl-1.27/src/modules/perl/Table.xs Tue Dec 10 11:57:55 +2002 @@ -112,13 +112,19 @@ PREINIT: Apache__Table tab; CODE: - tab = (Apache__Table)hvrv2table(self); - if(SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV) - safefree(tab); + if (!SvREADONLY(self)) { + tab = (Apache__Table)hvrv2table(self); + if(SvROK(self) && SvTYPE(SvRV(self)) == SVt_PVHV) + safefree(tab); + } + else { + fprintf(stderr, "Apache::Table is trying to free READONLY SV at %p\n", self); + fflush(stderr); + } void FETCH(self, key) Apache::Table self const char *key