Index: twisted/internet/gtk2reactor.py
===================================================================
--- twisted/internet/gtk2reactor.py	(revision 23526)
+++ twisted/internet/gtk2reactor.py	(working copy)
@@ -243,15 +243,16 @@
         selectreactor.SelectReactor.crash(self)
         import gtk
         # mainquit is deprecated in newer versions
-        if hasattr(gtk, 'main_quit'):
-            gtk.main_quit()
-        else:
-            gtk.mainquit()
+        if gtk.main_level():
+            if hasattr(gtk, 'main_quit'):
+                gtk.main_quit()
+            else:
+                gtk.mainquit()
 
     def run(self, installSignalHandlers=1):
         import gtk
         self.startRunning(installSignalHandlers=installSignalHandlers)
-        self.simulate()
+        gobject.timeout_add(0, self.simulate)
         # mainloop is deprecated in newer versions
         if hasattr(gtk, 'main'):
             gtk.main()
