[Python-Dev] status of development documentation
Samuele Pedroni
pedronis at strakt.com
Sat Dec 24 16:34:41 CET 2005
Tim Peters wrote:
> [Neal]
>
>>Hmmm, I thought others were running the tests on Windows too. There
>>was one report on Nov 22 about running Purify on Windows 2k (subject:
>>ast status, memory leaks, etc). He had problems with a stack overflow
>>in test_compile. He was going to disable the test and re-run. I
>>never heard back though. Based on that info, I would guess that
>>test_builtin was working on Win 2k on Nov 22.
>
>
> I wouldn't assume that. My "nobody" was wrt the universe of Python
> developers, not users; folks like Trent and MarkH and you and me.
> Without "normal" baseline test experience, users don't understand what
> they're seeing, and so their reports can be highly misleading. You
> can trust that while I don't understand what I'm seeing here either,
> at least I told the absolute truth about it and didn't hold back
> critical details ;-)
>
> That said, I was hoping to do some Python work over Thanksgiving week,
> but was mortally discouraged on the Nov 19-20 weekend by all the test
> failures I saw. So I'm pretty sure (but not certain) that
> test_builtin was failing then.
>
>
>>>(A parenthentical question: is there a reason you don't pass -uall to
>>>regrtest.py?)
>
>
>>It's calling make test. I thought about calling regrtest.py instead
>>and doing as you suggest. Is there a benefit to running make test?
>
>
> You're asking a Windows guy about make: bad career move ;-)
>
>
>>I know it runs with and without -O. I guess it's only machine time, I
>>could run make test and regrtest.py -uall.
>
>
> -uall is helpful in finding bugs. One thing in particular here is
> that test_compiler runs only a tiny subset of its full test unless an
> appropriate -u flag is given.
>
>
>>>On WinXP Pro SP2 today, passing -uall, and after fixing all the MS
>>>compiler warnings that have crept in:
>>>
>>>251 tests OK.
>>>12 tests failed:
>>> test_builtin test_coding test_compiler test_pep263
>>> test_univnewlines test_urllib test_urllib2 test_urllibnet
>>> test_userlist test_wave test_whichdb test_zipfile
>>>1 skip unexpected on win32:
>>> test_xml_etree_c
>
>
>>Ouch! I'm might be to blame for at least some of those. :-(
>
>
> I'm sure it's not as bad as it looks. For example, test_coding and
> (the -uall) test_compiler fail for exactly the same reason. For
> another, when a test fails on Windows, it sometimes leaves a "@test"
> file or directory behind, which causes a cascade of bogus failures
> later. For example, test_userlist, test_wave, test_whichdb, and
> test_zipfile all pass when run alone here. Others probably do too.
>
> ...
>
>>Do you know if the tests were broken before the AST merge (about Oct
>>22 I think)?
>
>
> I don't know. I'm getting more evidence that most (if not all) of the
> failures are due to compile-time parsing screwups, so the AST merge is
> a prime suspect.
>
> Is it possible that generated parse tables (whatever) are out-of-date
> on a Windows box? There are no makefiles here, and the Windows build
> has always relied on Unix-heads to check in correct generated parser
> files.
>
>
>>>The code up to the first failure is short:
>>>
>>> bom = '\xef\xbb\xbf'
>>> compile(bom + 'print 1\n', '', 'exec')
>>>
>>>Curiously, that sequence doesn't blow up under the released Windows
>>>Python 2.4.2, so somebody broke something here since then ...
>
>
>>There were a bunch of changes to Parser/tokenizer.c to handle error
>>conditions. Those go back to Oct 1. I don't *think* those would
>>cause these, but I'm not sure.
>>
>>Sorry, I don't know any more. I guess you might have to binary search
>>by date to try and find the problem.
>
>
> That's just silly ;-) What I need is someone who understands what
> this code is _supposed_ to do, so we can fix it; finding the checkin
> that caused it isn't nearly as interesting. Windows has an excellent
> debug-build debugger and I can easily step through the code. But I
> have no idea why compiling a string starting with '\xef\xbb\xbf'
> should _not_ be a syntax error -- it looks like a syntax error to me.
>
> And when I step thru the code, it looks like a syntax error to the
> parser too. It peels off the first character (\xef), and says "syntax
> error" at that point:
>
> Py_CompileStringFlags ->
> PyParser_ASTFromString ->
> PyParser_ParseStringFlagsFilename ->
> parsetok ->
> PyTokenizer_Get
>
> That sets `a` to point at the start of the string, `b` to point at the
> second character, and returns type==51. Then `len` is set to 1,
> `str` is malloc'ed to hold 2 bytes, and `str` is filled in with
> "\xef\x00" (the first byte of the input, as a NUL-terminated C
> string).
>
> PyParser_AddToken then calls classify(), which falls off the end of
> its last loop and returns -1: syntax error.
>
> So how it gets there is really quite straightfoward. The problem for
> me is that I have no idea why it _should_ do something other than
> that, let alone what that may be.
PEP263:
"""
To aid with platforms such as Windows, which add Unicode BOM marks
to the beginning of Unicode files, the UTF-8 signature
'\xef\xbb\xbf' will be interpreted as 'utf-8' encoding as well
(even if no magic encoding comment is given).
"""
> This needs someone who knows
> something :-)
> _______________________________________________
> Python-Dev mailing list
> Python-Dev at python.org
> http://mail.python.org/mailman/listinfo/python-dev
> Unsubscribe: http://mail.python.org/mailman/options/python-dev/pedronis%40strakt.com
More information about the Python-Dev
mailing list