This is part of The Pile, a partial archive of some open source mailing lists and newsgroups.
Subject: ANNOUCE: HTML::Mason 0.89 From: Jonathan Swartz <swartz@pobox.com> Date: Fri, 15 Sep 2000 08:03:21 -0700 The URL http://masonhq.com/download/HTML-Mason-0.89.tar.gz has entered CPAN as file: $CPAN/authors/id/J/JS/JSWARTZ/HTML-Mason-0.89.tar.gz size: 258824 bytes md5: d03e77cd42b6995eefeeccb3a0d0b541 This fixes a fatal argument processing bug and system logging bug in 0.88. We believe this version to be stable again; please send bug reports to the Mason user's list. === Subject: [Fwd: Re: [Mason]Intermittent Segfaults] From: Mark Hughes <mark@ismltd.com> Date: Fri, 15 Sep 2000 16:08:15 +0100 Harry Danilevsky wrote: > Mark Hughes [mailto:mark@ismltd.com] wrote: > > > Our sites experience intermittent segfaults > > (Segmentation Fault (11)) when serving mason generated > > pages, these seem to be completely random in frequency > > and called component (though components do share common > > module code), and occur infrequently, every few thousand > > requests or so. > > > > The servers are very busy, though load and memory usage are light. > > > > Setup Details: > > > > Mason 0.87 (Just tried 0.88, same intermittent problem) > > Perl 5.005_03 > > mod_perl 1.24 > > Apache 1.3.12 > > Linux 2.2.16 > > > > I've tried mason using Apache::Request and CGI.pm to handle > > %ARGS - same > > problem. > > > > Backtrace, obtained according to mod_perl SUPPORT file > > > > Program received signal SIGSEGV, Segmentation fault. > > 0x80ed2b2 in Perl_pp_entersub () > > > > #0 0x80ed2b2 in Perl_pp_entersub () > > #1 0x80bf38c in perl_call_sv () > > #2 0x80e13cc in Perl_croak () > > #3 0x80ee02a in Perl_sv_upgrade () > > #4 0x80c1d82 in Perl_gv_init () > > #5 0x80c2e19 in Perl_gv_fetchpv () > > #6 0x8087f1e in XS_Apache_finfo () > > #7 0x80ecfb6 in Perl_pp_entersub () > > #8 0x8116f5d in Perl_runops_standard () > > #9 0x80bf3a1 in perl_call_sv () > > #10 0x807c1cb in perl_call_handler () > > #11 0x807b9db in perl_run_stacked_handlers () > > #12 0x8079f5d in perl_handler () > > #13 0x80950e3 in ap_invoke_handler () > > #14 0x80a85b9 in ap_some_auth_required () > > #15 0x80a861c in ap_process_request () > > #16 0x809ff0e in ap_child_terminate () > > #17 0x80a009c in ap_child_terminate () > > #18 0x80a01f9 in ap_child_terminate () > > #19 0x80a0826 in ap_child_terminate () > > #20 0x80a0fb3 in main () > > #21 0x400941eb in __libc_start_main (main=0x80a0c6c <main>, argc=6, > > argv=0xbffffc94, init=0x8060090 <_init>, fini=0x811703c <_fini>, > > rtld_fini=0x4000a610 <_dl_fini>, stack_end=0xbffffc8c) > > at ../sysdeps/generic/libc-start.c:90 > > > > > > > > Any clues on how I can further debug this problem to try and > > get to the > > bottom > > of it. Is this a question better asked on the mod_perl list? > > > > BTW - I'm not using PerlFreshRestart > Not sure if this is the reason, but I wonder if you are using > thread-enabled Perl. The reason I ask is that I see a call to finfo(), > and under threaded Perl (on Solaris, not Linux though) I was getting > an intermittent Perl error about not being able to "upgrade this kind of > scalar". > These errors were produced by calls to $r->finfo() in Mason/ApacheHandler.pm > I wrapped them into eval() with a fallback to $r->filename() > and the problem disappeared. I suggest you try replacing calls to finfo() > with filename() and see what happens (it certainly may degrade the > performance). It seems Harry was correct with this, I applied the following patch supplied by Doug on the mod_perl list and the segfaults have gone away. We're not using threaded perl by the way. On another note, our Mason driven sites have been getting well over 1 million page views a day this week (main one is UEFA Champions League Fantasy Football - http://uclff.ismgames.com) and the performance has been great :-) On Sat, 9 Sep 2000, Shane Adams wrote: > #7 0x80894de in XS_Apache_finfo (cv=0x8207410) at Apache.xs:1844 i haven't tried to reproduce this, but suspect a bug in $r->finfo which the patch below should workaround. --- lib/HTML/Mason/ApacheHandler.pm~ Thu Aug 24 22:42:51 2000 +++ lib/HTML/Mason/ApacheHandler.pm Mon Sep 11 11:43:02 2000 @@ -531,7 +531,7 @@ # If filename is a directory, then either decline or simply reset # the content type, depending on the value of decline_dirs. # - if (-d $r->finfo) { + if (-d $r->filename) { if ($self->decline_dirs) { return DECLINED; } else { @@ -544,7 +544,7 @@ # (mainly for dhandlers). # my $pathname = $r->filename; - $pathname .= $r->path_info unless -f $r->finfo; + $pathname .= $r->path_info unless -f _; # # Compute the component path via the resolver. @@ -555,7 +555,7 @@ # # Decline if file does not pass top level predicate. # - if (-f $r->finfo and defined($self->{top_level_predicate})) { + if (-f _ and defined($self->{top_level_predicate})) { return NOT_FOUND unless $self->{top_level_predicate}->($r->filename); } ===