Ticket #318 (closed defect: worksforme)

Opened 5 years ago

Last modified 4 years ago

trial buildbot.test failure

Reported by: Pike Owned by:
Priority: major Milestone: 0.7.12
Version: 0.7.7 Keywords:
Cc: dbailey@…

Description

I just tried to run the latest version of trunk from buildbot.net against Twisted 8.1.0 and python2.5 on linux.

The tests all seem to pass, but I get an exception at the end.

PASSED (skips=27, successes=305) Exception exceptions.AttributeError?: "'NoneType?' object has no attribute 'StringIO'" in <bound method RemoteReference?.del of <twisted.spread.pb.RemoteReference? instance at 0x955966c>> ignored

No idea what's going on, setting target to 0.7.8, in case this is a release blocker.

If you have an idea what to investigate or what further info to take, ask away.

Change History

comment:1 Changed 4 years ago by dustin

  • Milestone changed from 0.8.0 to 0.7.+

I'd love to figure this out, but it doesn't seem to hurt anything.

comment:2 Changed 4 years ago by dbailey

  • Cc dbailey@… added

I can reproduce this consistently by just running the following 2 tests PYTHONPATH=. trial -l test.log -e buildbot.test.test_runner buildbot.test.test_run

Running either by themselves or by reversing the order doesn't produce the message, just if you run together.

Doesn't get you much further but it means that when testing with the option --spew added to the command line to trial, you have much less to search though to see what's going on.

comment:3 Changed 4 years ago by dustin

Better yet:

trial buildbot.test.test_runner.Create.testUpgradeMaster buildbot.test.test_run.CanStartBuild.testCanStartBuild

comment:4 Changed 4 years ago by dustin

OK, to restart the obvious, this has something to do with global shutdown, and an unfortunate ordering of destroying objects.

The StringIO reference is in banana.py, when it's trying to send a decref command:

275     def sendEncoded(self, obj):
276         io = cStringIO.StringIO()
277         self._encode(obj, io.write)
278         value = io.getvalue()
279         self.transport.write(value)

I would imagine that the bbot error here is that we're failing to properly shut down a RemoteReference? object before global destruction kicks in. I can't say as I know how to do that, though.

comment:5 Changed 4 years ago by dustin

OK, I committed a bit of cleanup, but so far no fix. I'm going to push this to the next release, since it doesn't cause any problems.

comment:6 Changed 4 years ago by dustin

  • Milestone changed from 0.7.+ to 0.7.12

comment:7 Changed 4 years ago by dustin

  • Status changed from new to closed
  • Resolution set to worksforme

just closing as WORKSFORME, since, well, it works.

comment:8 Changed 4 years ago by dbailey

Would it be useful to record both the versions of twisted and buildbot that this succeeded for you?

comment:9 Changed 4 years ago by dustin

I've seen it on all versions of Python and Twisted I've tried. py25-t810, py25-tw820, py26-tw810, py25-tw250.

Note: See TracTickets for help on using tickets.