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