Jan Kaluža wrote on 2013-07-15: > On 07/15/2013 02:58 PM, Steve Hay wrote: >> [...] right now I still have it crashing > on startup (with or without revision r1303215), so we obviously didn't > have the same crashing problem after all :-/ I will try to fix that > next. >> > > I'm afraid I can't help you further here... >
When running "nmake test" I'm getting: Can't load 'D:\temp\mp2d\modperl-httpd24\blib\arch/auto/Apache2/Const/Const.dll' for module Apache2::Const: load_file:The specified module could not be found at D:/temp/mp2d/perl/lib/DynaLoader.pm line 190. at D:\temp\mp2d\modperl-httpd24\t\response\TestApache\subprocess.pm line 13. Trying a simple one-liner: D:\temp\mp2d\perl\bin\perl.exe -Iblib\arch -Iblib\lib -MApache2::Const -e1 does much the same. That works with trunk, built against httpd-2.2. The difference is that Apache2/Const/Const.dll now depends on mod_perl.so (it didn't use to), and that isn't in a location in the PATH when running the test suite. Using dumpbin /imports to see why we have this new dependency shows that it's due to the 'perl_module' symbol... We've been here before recently with the APR::Brigade build failure. I wondered if Apache2::Const (and maybe others) needed to link against libaprext.lib (with its fake 'perl_module' symbol) to avoid this problem, but lib/ModPerl/BuildMM says: # in order to decouple APR/APR::* from mod_perl.so, # link these modules against the static MP_APR_LIB lib, # rather than the mod_perl lib (which would demand mod_perl.so # be available). For other modules, use mod_perl.lib as # usual. which suggests that Apache2::* modules are expected to depend on mod_perl.so (even though this one happened not to until now), so using libaprext.lib instead of mod_perl.lib here is probably the wrong thing to do here and would likely break things that require a proper definitions of 'perl_module'. So I think the answer is to add src/modules/perl (where mod_perl.so has been built) to the PATH when running the test suite. If I do that manually in my Command Prompt window then "nmake test" runs normally (albeit with a *lot* of test failures [1] which I'll look at later), but I'm not sure where is the best place to make that happen automatically within Apache-Test? Is this an issue on other OSes, or only on Windows? (Not sure if you normally build mod_perl dynamically or statically linked elsewhere?) [1] The complete list of failures on this first run through (using a perl without LWP installed, so lots more tests were skipped too) is: Test Summary Report ------------------- t\apache\subprocess.t (Wstat: 0 Tests: 1 Failed: 0) Parse errors: Bad plan. You planned 5 tests but ran 1. t\api\access2.t (Wstat: 0 Tests: 0 Failed: 0) Parse errors: No plan found in TAP output t\api\server_const.t (Wstat: 2304 Tests: 0 Failed: 0) Non-zero exit status: 9 Parse errors: No plan found in TAP output t\apr-ext\brigade.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 14 tests but ran 0. t\apr-ext\bucket.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 21 tests but ran 0. t\apr-ext\finfo.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 27 tests but ran 0. t\apr-ext\perlio.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: No plan found in TAP output t\apr-ext\pool.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 77 tests but ran 0. t\apr-ext\table.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 58 tests but ran 0. t\apr-ext\threadmutex.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 5 tests but ran 0. t\apr-ext\threadrwlock.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 5 tests but ran 0. t\apr-ext\uri.t (Wstat: 1280 Tests: 0 Failed: 0) Non-zero exit status: 5 Parse errors: Bad plan. You planned 36 tests but ran 0. t\compat\conn_rec.t (Wstat: 0 Tests: 2 Failed: 0) Parse errors: Bad plan. You planned 4 tests but ran 2. t\modperl\local_env.t (Wstat: 0 Tests: 6 Failed: 1) Failed test: 6 t\modperl\merge.t (Wstat: 0 Tests: 10 Failed: 3) Failed tests: 3, 6, 9 t\modperl\merge2.t (Wstat: 0 Tests: 10 Failed: 3) Failed tests: 3, 6, 9 t\modperl\merge3.t (Wstat: 0 Tests: 10 Failed: 3) Failed tests: 3, 6, 9 t\modperl\setupenv2.t (Wstat: 0 Tests: 23 Failed: 7) Failed tests: 17-23 t\modules\cgi.t (Wstat: 0 Tests: 4 Failed: 4) Failed tests: 1-4 t\modules\cgi2.t (Wstat: 0 Tests: 4 Failed: 4) Failed tests: 1-4 t\modules\cgipost.t (Wstat: 0 Tests: 6 Failed: 5) Failed tests: 2-6 t\modules\cgipost2.t (Wstat: 0 Tests: 6 Failed: 5) Failed tests: 2-6 t\protocol\echo_block.t (Wstat: 0 Tests: 3 Failed: 2) Failed tests: 2-3 t\protocol\echo_nonblock.t (Wstat: 0 Tests: 3 Failed: 1) Failed test: 2 t\protocol\echo_timeout.t (Wstat: 0 Tests: 5 Failed: 4) Failed tests: 2-5 t\protocol\pseudo_http.t (Wstat: 0 Tests: 13 Failed: 9) Failed tests: 3-8, 11-13 Files=249, Tests=1937, 722 wallclock secs ( 2.12 usr + 0.30 sys = 2.42 CPU) Result: FAIL Failed 26/249 test programs. 51/1937 subtests failed.