Greetings Doug McEachern wrote: [...] > avoiding use of PL_sv_no has cured all segfaults on win32. > the fixes have > been checked into cvs. > there are still a few tests that fail, but none that trigger > a segfault.
With the latest nodperl CVS snapshot the tally of the tests is much improved. There is a residual crash at dir_config.t (WinNT SP6 - MS Visual Studio 6 SP3). The debugger shows apache (debug version) going through the ap_invoke_handler sequence before dumping me in the middle of mod_perl's assembly. When it segfaults the stack (not cleared, this time) shows a call into modperl the a trip into perl56.dll followed by a call into request_util then modperl again (where it dies). I re-ran the test suite without dir_config and all crashes go away, though a few tests still fail. At this point, I made a debug version of mod_perl (now possible - the compiler warns about replacements of /O1 with /Od) and - lo and behold! - the crash disappeared (darn). Also a few of the previously failing tests now succeed The tallies (with/without dir_config.t, and nmake test DEBUG) are appendend below. Note that, in the first one, all tests coming after dir_config fail ('coz apache is deeply unsettled, I think) Cheers, alf Using the following snapshot: modperl-2.0_20020513043636.tar.gz httpd-2.0_20020506161223.tar.gz apr-util_20020506162813.tar.gz apr_20020506162759.tar.gz -- output of nmake test -- D:\Apache2/bin/Apache.exe -d D:/builds/modperl-2.0/t -f D:/builds/mo /conf/httpd.conf -DAPACHE2 -DPERL_USEITHREADS using Apache/2.0.37-dev (winnt MPM) waiting for server to start: 00:00[Mon May 13 11:42:50 2002] [info] 1 modules loaded [Mon May 13 11:42:50 2002] [info] 5 APR:: modules loaded [Mon May 13 11:42:50 2002] [info] base server + 6 vhosts ready to run [Mon May 13 11:42:50 2002] [info] 11 Apache:: modules loaded [Mon May 13 11:42:50 2002] [info] 5 APR:: modules loaded [Mon May 13 11:42:50 2002] [info] base server + 6 vhosts ready to run END in modperl_extra.pl, pid=309 END in modperl_extra.pl, pid=309 END in modperl_extra.pl, pid=309 END in modperl_extra.pl, pid=309 END in modperl_extra.pl, pid=309 END in modperl_extra.pl, pid=309 END in modperl_extra.pl, pid=309 waiting for server to start: ok (waited 1 secs) server localhost:8529 started server localhost:8530 listening (TestDirective::perlmodule) server localhost:8531 listening (TestDirective::perlrequire) server localhost:8532 listening (TestProtocol::echo) server localhost:8533 listening (TestProtocol::echo_filter) server localhost:8534 listening (TestProtocol::eliza) server localhost:8535 listening (TestFilter::input_msg) apache\cgihandler........ok apache\compat............ok apache\compat2...........ok apache\conftree..........ok apache\constants.........ok apache\post..............ok apache\read..............ok apache\scanhdrs..........ok apache\subprocess........skipped: perl < 5.7.3, cannot find module 'A apache\write.............ok api\access...............ok api\aplog................ok api\conn_rec.............ok api\lookup_uri...........ok api\lookup_uri2..........ok api\module...............FAILED test 3 Failed 1/13 tests, 92.31% okay api\r_subclass...........ok api\request_rec..........ok api\response.............ok api\rutil................ok api\send_fd..............ok api\sendfile.............ok api\server_rec...........ok api\server_util..........ok api\uri..................ok apr\base64...............ok apr\constants............ok apr\date.................ok apr\netlib...............ok apr\perlio...............skipped: iolayers is not available with this Perl apr\pool.................ok apr\string...............ok apr\table................ok apr\util.................ok apr\uuid.................ok directive\env............FAILED tests 1-3 Failed 3/4 tests, 25.00% okay directive\perlmodule.....ok directive\perlrequire....ok directive\setupenv.......ok filter\api...............ok filter\buckets...........ok filter\input_body........ok filter\input_msg.........ok filter\lc................ok filter\reverse...........ok hooks\access.............ok hooks\authen.............ok hooks\authz..............ok hooks\fixup..............ok hooks\headerparser.......ok hooks\init...............ok hooks\trans..............ok modperl\dir_config.......FAILED before any test output arrived modperl\endav............FAILED before any test output arrived modperl\env..............FAILED before any test output arrived modperl\exit.............FAILED before any test output arrived modperl\getc.............FAILED tests 1-2 Failed 2/2 tests, 0.00% okay modperl\pnotes...........FAILED before any test output arrived modperl\print............FAILED before any test output arrived modperl\printf...........FAILED before any test output arrived modperl\readline.........FAILED tests 1-2 Failed 2/2 tests, 0.00% okay modperl\sameinterp.......must pass an interpreter id to work with at odperl-2.0/Apache-Test/lib/Apache/TestRequest.pm line 466. modperl\sameinterp.......dubious Test returned status 77 (wstat 19712, 0x4d00) DIED. FAILED tests 1-12 Failed 12/12 tests, 0.00% okay modules\cgi..............FAILED tests 1-4 Failed 4/5 tests, 20.00% okay modules\cgiupload........FAILED tests 1-2 Failed 2/2 tests, 0.00% okay modules\include..........FAILED tests 1-6 Failed 6/6 tests, 0.00% okay protocol\echo............Can't use an undefined value as a symbol ref rotocol\echo.t line 17. protocol\echo............dubious Test returned status 77 (wstat 19712, 0x4d00) DIED. FAILED tests 1-3 Failed 3/3 tests, 0.00% okay protocol\echo_filter.....Can't use an undefined value as a symbol ref rotocol\echo_filter.t line 17. protocol\echo_filter.....dubious Test returned status 77 (wstat 19712, 0x4d00) DIED. FAILED tests 1-3 Failed 3/3 tests, 0.00% okay protocol\eliza...........skipped: cannot find module 'Chatbot::Eliza' Failed Test Stat Wstat Total Fail Failed List of Failed --------------------------------------------------------------------- api\module.t 13 1 7.69% 3 directive\env.t 4 3 75.00% 1-3 modperl\dir_config.t ?? ?? % ?? modperl\endav.t ?? ?? % ?? modperl\env.t ?? ?? % ?? modperl\exit.t ?? ?? % ?? modperl\getc.t 2 2 100.00% 1-2 modperl\pnotes.t ?? ?? % ?? modperl\print.t ?? ?? % ?? modperl\printf.t ?? ?? % ?? modperl\readline.t 2 2 100.00% 1-2 modperl\sameinterp.t 77 19712 12 12 100.00% 1-12 modules\cgi.t 5 4 80.00% 1-4 modules\cgiupload.t 2 2 100.00% 1-2 modules\include.t 6 6 100.00% 1-6 protocol\echo.t 77 19712 3 3 100.00% 1-3 protocol\echo_filter.t 77 19712 3 3 100.00% 1-3 3 tests skipped. !!! : error running tests (please examine D:t\logs\error_log) NMAKE : fatal error U1077: 'D:\Perl\bin\perl.exe' : return code '0x1' Stop. ---nmake test output end ---- -- output of all tests *without dir_config* -- D:\Apache2/bin/Apache.exe -d D:/builds/modperl-2.0/t -f D:/builds/modperl-2.0/t/conf/httpd.conf -DAPACHE2 -DPERL_USEITHREADS using Apache/2.0.37-dev (winnt MPM) waiting for server to start: 00:00[Mon May 13 11:59:32 2002] [info] 12 Apache:: modules loaded [Mon May 13 11:59:32 2002] [info] 5 APR:: modules loaded [Mon May 13 11:59:32 2002] [info] base server + 6 vhosts ready to run tests [Mon May 13 11:59:32 2002] [info] 11 Apache:: modules loaded [Mon May 13 11:59:32 2002] [info] 5 APR:: modules loaded [Mon May 13 11:59:32 2002] [info] base server + 6 vhosts ready to run tests END in modperl_extra.pl, pid=185 END in modperl_extra.pl, pid=185 END in modperl_extra.pl, pid=185 END in modperl_extra.pl, pid=185 END in modperl_extra.pl, pid=185 END in modperl_extra.pl, pid=185 END in modperl_extra.pl, pid=185 waiting for server to start: ok (waited 0 secs) server localhost:8529 started server localhost:8530 listening (TestDirective::perlmodule) server localhost:8531 listening (TestDirective::perlrequire) server localhost:8532 listening (TestProtocol::echo) server localhost:8533 listening (TestProtocol::echo_filter) server localhost:8534 listening (TestProtocol::eliza) server localhost:8535 listening (TestFilter::input_msg) apache/cgihandler........ok apache/compat............ok apache/compat2...........ok apache/conftree..........ok apache/constants.........ok apache/post..............ok apache/read..............ok apache/scanhdrs..........ok apache/subprocess........skipped: perl < 5.7.3, cannot find module 'APR::PerlIO' apache/write.............ok api/access...............ok api/aplog................ok api/conn_rec.............ok api/lookup_uri...........ok api/lookup_uri2..........ok api/module...............FAILED test 3 Failed 1/13 tests, 92.31% okay api/r_subclass...........ok api/request_rec..........ok api/response.............ok api/rutil................ok api/send_fd..............ok api/sendfile.............ok api/server_rec...........ok api/server_util..........ok api/uri..................ok apr/base64...............ok apr/constants............ok apr/date.................ok apr/netlib...............ok apr/perlio...............skipped: iolayers is not available with this version of Perl apr/pool.................ok apr/string...............ok apr/table................ok apr/util.................ok apr/uuid.................ok directive/env............FAILED tests 1-3 Failed 3/4 tests, 25.00% okay directive/perlmodule.....ok directive/perlrequire....ok directive/setupenv.......ok filter/api...............ok filter/buckets...........ok filter/input_body........ok filter/input_msg.........ok filter/lc................ok filter/reverse...........ok hooks/access.............ok hooks/authen.............ok hooks/authz..............ok hooks/fixup..............ok hooks/headerparser.......ok hooks/init...............ok hooks/trans..............ok modperl/endav............ok modperl/env..............ok modperl/exit.............ok modperl/getc.............ok modperl/pnotes...........ok modperl/print............ok modperl/printf...........ok modperl/readline.........ok modperl/sameinterp.......ok modules/cgi..............ok modules/cgiupload........ok modules/include..........ok protocol/echo............ok protocol/echo_filter.....ok protocol/eliza...........skipped: cannot find module 'Chatbot::Eliza' Failed Test Stat Wstat Total Fail Failed List of Failed ---------------------------------------------------------------------------- --- api/module.t 13 1 7.69% 3 directive/env.t 4 3 75.00% 1-3 3 tests skipped. !!! : error running tests (please examine D:t\logs\error_log) -- END output of all tests *without dir_config* -- -- output of nmake test modperl DEBUG-- D:\builds\modperl-2.0>nmake test Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. cd "src/modules/perl" && NMAKE Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 Copyright (C) Microsoft Corp 1988-1998. All rights reserved. D:\Perl\bin\perl.exe -Iblib\arch/Apache2 -Iblib\lib/Apache2 t/TEST -clean D:\Perl\bin\perl.exe -Iblib\arch/Apache2 -Iblib\lib/Apache2 t/TEST *** : cannot build c-modules without apxs D:\Apache2/bin/Apache.exe -d D:/builds/modperl-2.0/t -f D:/builds/modperl-2.0/t /conf/httpd.conf -DAPACHE2 -DPERL_USEITHREADS using Apache/2.0.37-dev (winnt MPM) waiting for server to start: 00:00[Mon May 13 12:11:57 2002] [info] 12 Apache:: modules loaded [Mon May 13 12:11:57 2002] [info] 5 APR:: modules loaded [Mon May 13 12:11:57 2002] [info] base server + 6 vhosts ready to run tests [Mon May 13 12:11:57 2002] [info] 11 Apache:: modules loaded [Mon May 13 12:11:57 2002] [info] 5 APR:: modules loaded [Mon May 13 12:11:57 2002] [info] base server + 6 vhosts ready to run tests END in modperl_extra.pl, pid=342 END in modperl_extra.pl, pid=342 END in modperl_extra.pl, pid=342 END in modperl_extra.pl, pid=342 END in modperl_extra.pl, pid=342 END in modperl_extra.pl, pid=342 END in modperl_extra.pl, pid=342 waiting for server to start: ok (waited 1 secs) server localhost:8529 started server localhost:8530 listening (TestDirective::perlmodule) server localhost:8531 listening (TestDirective::perlrequire) server localhost:8532 listening (TestProtocol::echo) server localhost:8533 listening (TestProtocol::echo_filter) server localhost:8534 listening (TestProtocol::eliza) server localhost:8535 listening (TestFilter::input_msg) apache\cgihandler........ok apache\compat............ok apache\compat2...........ok apache\conftree..........ok apache\constants.........ok apache\post..............ok apache\read..............ok apache\scanhdrs..........ok apache\subprocess........skipped: perl < 5.7.3, cannot find module 'APR::PerlIO' apache\write.............ok api\access...............ok api\aplog................ok api\conn_rec.............ok api\lookup_uri...........ok api\lookup_uri2..........ok api\module...............FAILED test 3 Failed 1/13 tests, 92.31% okay api\r_subclass...........ok api\request_rec..........ok api\response.............ok api\rutil................ok api\send_fd..............ok api\sendfile.............ok api\server_rec...........ok api\server_util..........ok api\uri..................ok apr\base64...............ok apr\constants............ok apr\date.................ok apr\netlib...............ok apr\perlio...............skipped: iolayers is not available with this version of Perl apr\pool.................ok apr\string...............ok apr\table................ok apr\util.................ok apr\uuid.................ok directive\env............ok directive\perlmodule.....ok directive\perlrequire....ok directive\setupenv.......ok filter\api...............ok filter\buckets...........ok filter\input_body........ok filter\input_msg.........ok filter\lc................ok filter\reverse...........ok hooks\access.............ok hooks\authen.............ok hooks\authz..............ok hooks\fixup..............ok hooks\headerparser.......ok hooks\init...............ok hooks\trans..............ok modperl\dir_config.......ok modperl\endav............ok modperl\env..............ok modperl\exit.............ok modperl\getc.............ok modperl\pnotes...........ok modperl\print............ok modperl\printf...........ok modperl\readline.........ok modperl\sameinterp.......ok modules\cgi..............ok modules\cgiupload........ok modules\include..........ok protocol\echo............ok protocol\echo_filter.....ok protocol\eliza...........skipped: cannot find module 'Chatbot::Eliza' Failed Test Stat Wstat Total Fail Failed List of Failed ---------------------------------------------------------------------------- --- api\module.t 13 1 7.69% 3 3 tests skipped. !!! : error running tests (please examine D:t\logs\error_log) NMAKE : fatal error U1077: 'D:\Perl\bin\perl.exe' : return code '0x1' Stop. -- END output of nmake test modperl DEBUG--