Niko Tyni wrote:
[Resending, as my first try on March 1st apparently got lost somewhere. Apologies if this ends up as a duplicate.]1. Problem Description: We're switching to Perl 5.10 in Debian soon, and I'm trying to update the mod_perl2 package to keep it working. Unfortunately the ModPerl-Registry test suite is failing on the Sparc architecture because apache2 is killed by a bus error (SIGBUS). I can reproduce this with a "clean" current SVN trunk (r631932) without any Debian-specific changes, and bisecting shows it broke with r620440. This is still with Perl 5.8.8 (from Debian unstable, package version 5.8.8-12). The kernel messages show the SIGBUS is an unaligned access (as usual on Sparc). I assume the U32->U16 changes in r615751 are related.
Good old Sparc!
Does this patch make the problem go away? (untested)
Index: src/modules/perl/modperl_mgv.c
===================================================================
--- src/modules/perl/modperl_mgv.c (revision 635455)
+++ src/modules/perl/modperl_mgv.c (working copy)
@@ -271,7 +271,7 @@
}
else {
if ((cv = get_cv(name, FALSE))) {
- handler->attrs = *modperl_code_attrs(aTHX_ cv);
+ memcpy(&(handler->attrs),modperl_code_attrs(aTHX_ cv),
sizeof(handler->attrs));
handler->mgv_cv =
modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(CvGV(cv))));
modperl_mgv_append(aTHX_ p, handler->mgv_cv, GvNAME(CvGV(cv)));
@@ -334,7 +334,7 @@
modperl_mgv_new_name(handler->mgv_obj, p, name);
}
- handler->attrs = *modperl_code_attrs(aTHX_ cv);
+ memcpy(&(handler->attrs),modperl_code_attrs(aTHX_ cv),
sizeof(handler->attrs));
/* note: this is the real function after @ISA lookup */
handler->mgv_cv = modperl_mgv_compile(aTHX_ p, HvNAME(GvSTASH(gv)));
modperl_mgv_append(aTHX_ p, handler->mgv_cv, handler_name);
--
Philippe M. Chiasson GPG: F9BFE0C2480E7680 1AE53631CB32A107 88C3A5A5
http://gozer.ectoplasm.org/ m/gozer\@(apache|cpan|ectoplasm)\.org/
signature.asc
Description: OpenPGP digital signature
