[Zope3-dev] Zope3 vs CVS Python

Tim Peters tim@zope.com
Tue, 6 Aug 2002 19:23:50 -0400


[Tim]
> Ya, if I knock the first constant in testManyClients() down from 50 to
> 40, the test passes on Win98.  At 41 or higher, it fails.  It clearly
> hit a socket resource wall.
>
> OTOH, I have to knock count down to 1 in testPipelining() before that one
> passes, and that seems fishy given that the test passes unaltered under
> 2.2.1 Python -- indeed, under 2.2.1 it passes even if I boost
> count from 25 to 1000!  Python 2.3 didn't get 1000x worse <wink> -- so
> I don't expect this one is a resource issue after all.  I doubt I'll
> have time to look at it again before Friday, though.

I did have time to try it on Win2K today, and same thing:  testPipelining()
+ current CVS Python fails on Win98SE and Win2K whenever count > 1.  The
failure mode is the same on both:

======================================================================
ERROR: testPipelining (Zope.Server.HTTP.tests.testHTTPServer.Tests)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\Code\Zope3\lib\python\Zope\Server\HTTP\tests\testHTTPServer.py",
             line 174, in testPipelining
    response_body = response.read(length)
  File "C:\CODE\PYTHON\lib\httplib.py", line 431, in read
    self.length = self.length - amt
TypeError: unsupported operand type(s) for -: 'str' and 'int'

At this point, self.length contains the string 'UNKNOWN', and amt is 0.

All other Zope3 tests passed under Win2K + Zope3 + CVS Python release build.

Alas, the same wasn't true of Win2K + Zope3 + CVS Python *debug* build.
That died with a memory fault in testManyClients(), but only in the context
of running the full test suite (testManyClients() passed in isolation).  The
symptoms suggested object management isn't being done correctly (the
doubly-linked list of all live Python objects, which only exists in a debug
build, contained an unexpected NULL link); that would be something goofing
up at the C level, probably in an extension module, and that kind of thing
can *appear* not to have ill effects in the release build for a long time.

The second problem is a higher priority for me.