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,,,
