perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stas Bekman <s...@stason.org>
Subject Re: t/perl/ithreads.t revisited
Date Mon, 06 Dec 2004 17:25:46 GMT
Steve Hay wrote:
> Philippe M. Chiasson wrote:
> 
> 
>>Stas Bekman wrote:
>> 
>>
>>
>>>Steve Hay wrote:
>>>
>>>   
>>>
>>>
>>>>>>Next I want you to try cutting off things from startup files and 
>>>>>>httpd.conf, to find whether it's some unrelated module that is 
>>>>>>loaded that causes the problem. I suspect that because the sister

>>>>>>test t/perl/ithreads2.t doesn't fail, and it runs exactly the same

>>>>>>code, but inside a dedicated interpreter pool, which doesn't load

>>>>>>any other modules.
>>>>>>         
>>>>>>
>>>>>
>>>>>Will try (again), but I've tried this before and got nowhere with it :(
>>>>>
>>>>>       
>>>>>
>>>>
>>>>While trawling through the httpd.conf file I found a couple of what 
>>>>look like errors:  Two places say "PERL_ITHREADS" instead of 
>>>>"PERL_USEITHREADS".  Correcting these apparent mistakes fixes the 
>>>>broken test sequence previously reported!
>>>>     
>>>>
>>>
>>>[...]
>>>
>>>   
>>>
>>>
>>>>After making this change I found that reload.t now fails test 2.  This 
>>>>patch (against current CVS, since I can't get SVN working) fixes that:
>>>>
>>>>Index: t/modules/reload.t
>>>>===================================================================
>>>>RCS file: /home/cvspublic/modperl-2.0/t/modules/reload.t,v
>>>>retrieving revision 1.4
>>>>diff -u -u -r1.4 reload.t
>>>>--- t/modules/reload.t  11 Sep 2004 01:02:28 -0000      1.4
>>>>+++ t/modules/reload.t  26 Nov 2004 18:05:21 -0000
>>>>@@ -53,7 +53,7 @@
>>>>touch_mtime($test_file);
>>>>
>>>>{
>>>>-    my $expected = join '', map { "$_:" . uc($_) . "\n" } sort @tests;
>>>>+    my $expected = join '', map { "$_:$_\n" } sort @tests;
>>>>    my $received = get_body($same_interp, \&GET, $location);
>>>>    $skip++ unless defined $received;
>>>>    skip_not_same_interp(
>>>>     
>>>>
>>
>>That's not a correct fix to the problem. reload.t is apparently now failing for
>>you, and this patch just ignores the failure. 
>>
> 
> OK, current state of play is this:
> 
> With fresh svn check-out, all tests pass OK if I skip t/perl/ithreads, 
> but with t/perl/ithreads the server crashes on that test.
> 
> As before, this sequence reliably fails:
> 
> perl t/TEST -verbose t/modules/reload.t t/perl/api.t t/perl/ithreads.t
> 
> It still fails with the attached much-shortened conf file.  Note that 
> I've commented-out a top-level PerlInterpScope directive, in line with 
> recent changes.  If I re-instate that directive then t/perl/ithreads no 
> longer crashes, but t/modules/reload fails as described above.
> 
> Are we sure that the PerlInterpScope directive should not be at the 
> top-level?  If so, then reload.t is OK and we still have ithreads.t to fix.

I think PerlInterpScope just helps to hide the problem. It probably moves 
the interpreter back to the pool and a new interpreter is serving other 
requests.

I'm just going to make that test skip for now (it is not in the distro 
anyway) and later on we need to start working on writing a bunch of new 
tests exercising the scoping directives and nail this and other 
interpreter context switch problems.

-- 
__________________________________________________________________
Stas Bekman            JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/     mod_perl Guide ---> http://perl.apache.org
mailto:stas@stason.org http://use.perl.org http://apacheweek.com
http://modperlbook.org http://apache.org   http://ticketmaster.com

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@perl.apache.org
For additional commands, e-mail: dev-help@perl.apache.org


Mime
View raw message