perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Philippe M. Chiasson" <go...@ectoplasm.org>
Subject Re: [mp2] Perl 5.10 fixes from SVN cause SIGBUS on sparc
Date Mon, 10 Mar 2008 07:06:54 GMT
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/


Mime
View raw message