On Thu, Jun 13, 2002 at 06:52:13PM +0200, Andreas J. Koenig wrote:
> >>>>> On Wed, 12 Jun 2002 23:45:41 +0200, [EMAIL PROTECTED] (Andreas J. 
>Koenig) said:
> 
>   > Currently I have a testcase that is still 7300 lines of perl code for
>   > the server (after all these are in one file) but only 50 lines for the
>   > client. I hope to cut that down to a reasonable size tomorrow.
> 
> I fear I have to give up on this, I cannot cut the test case below
> 2800 lines. I cannot make it database-independent either. Whatever I
> cut out, the SEGV goes away.  :-(
> 
> I have switched to blead@17207 (apache is 1.3.24, mod_perl is 1.27)
> and this is the stack trace today. The line numbers are again wrong
> and I have no idea why. Please take another *sharp* look. If this bug
> cannot be fixed, I cannot upgrade PAUSE to 5.8.0 (unless I rename it
> to PAUSEGV :-)
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x400ed761 in _IO_fflush (fp=0x877f1e0) at iofflush.c:43
> 43 iofflush.c: No such file or directory.
> (gdb) bt
> #0  0x400ed761 in _IO_fflush (fp=0x877f1e0) at iofflush.c:43
> #1  0x8205fea in PerlIOStdio_flush (my_perl=0x82f4258, f=0x82fb298)
>     at perlio.c:2738

I'm grasping at straws, and I really don't know much about
PerlIO... but try this:

==== //depot/perl/perlio.c#179 - /u/vieraat/vieraat/jhi/pp4/perl/perlio.c ====
Index: perl/perlio.c
--- perl/perlio.c.~1~   Thu Jun 13 20:05:05 2002
+++ perl/perlio.c       Thu Jun 13 20:05:05 2002
@@ -2734,7 +2734,7 @@
 PerlIOStdio_flush(pTHX_ PerlIO *f)
 {
     FILE *stdio = PerlIOSelf(f, PerlIOStdio)->stdio;
-    if (PerlIOBase(f)->flags & PERLIO_F_CANWRITE) {
+    if (stdio && PerlIOBase(f)->flags & PERLIO_F_CANWRITE) {
        return PerlSIO_fflush(stdio);
     }
     else {
End of Patch.


NI-S will probably find this patch very wrong :-)

> #2  0x8203fde in Perl_PerlIO_flush (my_perl=0x82f4258, f=0x82fb298)
>     at perlio.c:1459
> #3  0x82040a8 in Perl_PerlIO_flush (my_perl=0x82f4258, f=0x82fb298)
>     at perlio.c:1487
> #4  0x8173e8f in Perl_my_popen (my_perl=0x82f4258, cmd=0x88b8fc1 "-", 
>     mode=0xbffff524 "w") at util.c:2080
> #5  0x81e3297 in Perl_do_openn (my_perl=0x82f4258, gv=0x88c5f34, 
>     name=0x88b8fc1 "-", len=1, as_raw=0, rawmode=0, rawperm=0, 
>     supplied_fp=0x0, svp=0x84f7098, num_svs=0) at doio.c:282
> #6  0x81cbda3 in Perl_pp_open (my_perl=0x82f4258) at pp_sys.c:542
> #7  0x816eb43 in Perl_runops_debug (my_perl=0x82f4258) at dump.c:1398
> #8  0x81174a3 in S_call_body (my_perl=0x82f4258, myop=0xbffff758, is_eval=0)
>     at perl.c:2044
> #9  0x8117003 in Perl_call_sv (my_perl=0x82f4258, sv=0x8387470, flags=4)
>     at perl.c:1962
> #10 0x809da38 in perl_call_handler (sv=0x8387470, r=0x87869ac, args=0x0)
>     at mod_perl.c:1658
> #11 0x809cbc4 in perl_run_stacked_handlers (hook=0x828e399 "PerlHandler", 
>     r=0x87869ac, handlers=0x83873ec) at mod_perl.c:1371
> #12 0x809a637 in perl_handler (r=0x87869ac) at mod_perl.c:897
> #13 0x80e6379 in ap_invoke_handler () at eval.c:88
> #14 0x80fbbdf in process_request_internal () at eval.c:88
> #15 0x80fbc4a in ap_process_request () at eval.c:88
> #16 0x80f2897 in child_main () at eval.c:88
> #17 0x80f2a55 in make_child () at eval.c:88
> #18 0x80f2bd6 in startup_children () at eval.c:88
> #19 0x80f326d in standalone_main () at eval.c:88
> #20 0x80f3acc in main () at eval.c:88
> #21 0x400a475d in __libc_start_main (main=0x80f3738 <main>, argc=4, 
>     ubp_av=0xbffffae4, init=0x807a628 <_init>, fini=0x8286704 <_fini>, 
>     rtld_fini=0x4000b8f4 <_dl_fini>, stack_end=0xbffffadc)
>     at ../sysdeps/generic/libc-start.c:129
> 
> Loaded modules of the application are quite a lot:
> 
>   Apache Apache::Connection Apache::Constants Apache::Constants::Exports
>   Apache::HeavyCGI Apache::HeavyCGI::Date Apache::HeavyCGI::Exception
>   Apache::HeavyCGI::ExePlan Apache::HeavyCGI::Layout Apache::Request
>   Apache::Server Apache::Status Apache::Symbol Apache::Table Apache::URI
>   AutoLoader B Carp Class::Singleton Compress::Zlib Config Cwd
>   DBD::mysql DBI Data::Dumper Devel::Symdump DirHandle DynaLoader Encode
>   Encode::Alias Encode::Config Encode::Encoding Exporter Exporter::Heavy
>   ExtUtils::Manifest Fcntl File::Basename File::Copy File::Find
>   File::Spec File::Spec::Unix HTML::Entities HTML::Parser HTTP::Date IO
>   IO::File IO::Handle IO::Seekable List::Util Mail::Mailer
>   Mail::Mailer::rfc822 Mail::Mailer::sendmail Mail::Send Scalar::Util
>   SelectSaver String::Random Symbol Text::Tabs Text::Wrap Time::HiRes
>   Time::Local URI URI::Escape URI::URL URI::WithBase URI::_generic
>   URI::_query URI::_server URI::_userpass URI::ftp Unicode::String
>   XML::Parser XML::Parser::Expat XSLoader base bytes constant fields
>   integer lib mod_perl overload pause_1999::authensegv
>   pause_1999::configsegv re strict utf8 vars warnings warnings::register
> 
> Most of the modules are not involved in any action, most of the
> testscript is unused code. The test script only does the following:
> 
> 1. Authentication via DBI (mysql)
> 2. Receive an uploaded file via Apache::Request
> 3. Send mail via Mail::Mailer (sendmail)
> 
> Action must be repeated about 6-8 times, only then the SEGV is reached.
> 
> 
> -- 
> andreas

-- 
$jhi++; # http://www.iki.fi/jhi/
        # There is this special biologist word we use for 'stable'.
        # It is 'dead'. -- Jack Cohen

Reply via email to