id	summary	reporter	owner	description	type	status	priority	milestone	component	resolution	keywords	cc	branch	branch_author	launchpad_bug
2854	Reactor claims not be running although reactor.run() has been called	htj		"Hi

The following code fails in current twisted trunk:

{{{

from twisted.internet import reactor, defer

def main():
    reactor.stop()
    return

if __name__ == '__main__':
    reactor.callWhenRunning(main)
    reactor.run()
}}}

The output is:
{{{
Unhandled error in Deferred:
Traceback (most recent call last):
  File ""/home/htj/pack/python/twisted/internet/base.py"", line 389, in _continueFiring
    callable(*args, **kwargs)
  File ""ting.py"", line 8, in main
    d.addBoth(lambda _ : reactor.stop())
  File ""/home/htj/pack/python/twisted/internet/defer.py"", line 210, in addBoth
    callbackKeywords=kw, errbackKeywords=kw)
  File ""/home/htj/pack/python/twisted/internet/defer.py"", line 182, in addCallbacks
    self._runCallbacks()
--- <exception caught here> ---
  File ""/home/htj/pack/python/twisted/internet/defer.py"", line 317, in _runCallbacks
    self.result = callback(self.result, *args, **kw)
  File ""ting.py"", line 4, in main
    reactor.stop()
  File ""/home/htj/pack/python/twisted/internet/base.py"", line 480, in stop
    raise RuntimeError, ""can't stop reactor that isn't running""
exceptions.RuntimeError: can't stop reactor that isn't running
}}}

This has worked well in previous versions if twisted. Am I doing anything wrong?
If I start doing actual IO the above structure works well.


I've tracked down the change in behaviour to be in internet/base.py from changeset 20909:
http://twistedmatrix.com/trac/changeset/20909

Although I do not really an idea of whats causing it.

I'm not quite sure how to have this as a trial test, it seems to be related to events during startup.
"	defect	closed	normal		core	fixed		therve exarkun			
