| **** BEGIN LOGGING AT Wed Apr 7 17:08:25 2004 | ||
| -->You are now talking on #schooltool | 17:08 | |
| mgedmin | aargh, libxml2 returns UTF-8 strings instead of Unicode strings | 17:08 |
|---|---|---|
| SteveA | ugh | 17:38 |
| mgedmin | I'm currently composing a long email to all@pov.lt | 17:40 |
| SteveA | about? | 18:08 |
| mgedmin | charset troubles | 18:09 |
| mgedmin | I've sent it already | 18:09 |
| mgedmin | oh wow | 18:28 |
| mgedmin | make ftest just gave me | 18:28 |
| mgedmin | exceptions.AttributeError: 'NoneType' object has no attribute 'invalidate' | 18:28 |
| SteveA | yug | 18:28 |
| mgedmin | somewhere in ZODB code | 18:28 |
| mgedmin | this does not seem to be reproducible :/ | 18:28 |
| SteveA | oh | 18:29 |
| SteveA | hmm... | 18:29 |
| SteveA | what kind of thing is asked to invalidate? | 18:29 |
| mgedmin | None, apparently | 18:30 |
| SteveA | other than None | 18:31 |
| mgedmin | txn.commit() -> txn._cleanup() -> txn._finish_one() -> jar.tpc_finish() -> _storage.tpc_finish() -> f(self._tid) -> _db.invalidate(tid, d, self) -> exceptions.AttributeError | 18:31 |
| mgedmin | apparently it happened when creating a relationship (the fourth one) | 18:31 |
| mgedmin | I'll try running make ftest in a loop and see if it recurs | 18:32 |
| SteveA | _db... | 18:33 |
| SteveA | when is _db set to None? | 18:33 |
| mgedmin | is that a rhetorical question? | 18:34 |
| SteveA | no, an exploratory one | 18:37 |
| mgedmin | all I have in front of me is a rather terse traceback | 18:40 |
| mgedmin | unless I manage to reproduce the bug, I cannot answer such questions :( | 18:40 |
| SteveA | Connection.close | 18:42 |
| SteveA | that's it I think | 18:42 |
| mgedmin | I'm not following | 18:42 |
| SteveA | so, the connection was closed, before tp_finish | 18:43 |
| SteveA | so, the connection was closed, before tpc_finish | 18:43 |
| SteveA | are these multiple threads in effect? | 18:43 |
| SteveA | could be a race in the test | 18:43 |
| mgedmin | hmm | 18:44 |
| mgedmin | the test runner is single-threaded | 18:44 |
| mgedmin | and there shouldn't have been anything else accessing the server | 18:44 |
| mgedmin | besides it was a functional test | 18:46 |
| mgedmin | it was talking to the server over HTTP | 18:46 |
| mgedmin | the server opens a db connection for each thread | 18:47 |
| mgedmin | the traceback begins in src/schooltool/main.py, line 355, in _process | 18:47 |
| mgedmin | the bug is reproducible | 18:50 |
| mgedmin | on another machine | 18:50 |
| mgedmin | 1 failure in 32 runs | 18:51 |
| mgedmin | 2 failures in 34 runs | 18:52 |
| mgedmin | slightly different error message | 18:52 |
| mgedmin | the realtime log of this is in muskatas:/home/mg/schooltool/make-ftest-in-a-loop in case you're interested | 18:53 |
| mgedmin | 3 failures in 80 runs | 19:04 |
| mgedmin | instrumented test: 0 failures in 35 runs so far | 19:19 |
| mgedmin | instrumented test: 0 failures in 74 runs so far | 19:28 |
| SteveA | ah, the log filename changed | 19:31 |
| mgedmin | yes | 19:34 |
| mgedmin | 0 failures in 100 runs, I'm trying a different approach | 19:35 |
| SteveA | um | 19:35 |
| SteveA | so, getting a trackback in conection.close fixed the bug? | 19:35 |
| mgedmin | hid it at least | 19:35 |
| SteveA | oh | 19:35 |
| SteveA | that sucks | 19:35 |
| mgedmin | if it's a race condition, I expect that printing huge tracebacks changed the timings sufficiently | 19:35 |
| mgedmin | now I'm saving the stack trace in an attribute and only print it when self._db is None near the line where the original exception took place | 19:36 |
| mgedmin | let's see what happens | 19:36 |
| mgedmin | the log file is now make-ftest-in-a-loop-*-2 | 19:36 |
| mgedmin | (no stderr this time, oops) | 19:39 |
| mgedmin | grr | 19:52 |
| mgedmin | even the lightweight instrumentation version did not show any errors in 70 tries | 19:53 |
| <--SteveA has quit ("Client exiting") | 20:23 | |
| **** ENDING LOGGING AT Wed Apr 7 21:17:50 2004 | ||
Generated by irclog2html.py 4.0.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!