The patch can only have been, absolute tops, 70 MiB and it probably wasn't a tenth of that.
-----Original Message-----
From: Martin Dorey [mailto:mar...@bluearc.com]
Sent: Friday, May 08, 2009 22:53
To: Martin Dorey
Subject: evergreen hang
2009-05-08T19:50:26.984-0700 Evergreen: (hang #128) event dispatch thread stuck processing event for 17.62 s so far:
e.ptextarea.PTextBuffer.changeBufferLength(PTextBuffer.java:329)
e.ptextarea.PTextBuffer.expandBuffer(PTextBuffer.java:340)
e.ptextarea.PTextBuffer.insertWithoutUndo(PTextBuffer.java:384)
e.ptextarea.PTextBuffer.access$300(PTextBuffer.java:43)
e.ptextarea.PTextBuffer$Doable.removeAndInsert(PTextBuffer.java:688)
e.ptextarea.PTextBuffer$Doable.redo(PTextBuffer.java:679)
e.ptextarea.PTextBuffer$Undoer.redo(PTextBuffer.java:620)
e.ptextarea.PTextBuffer$Undoer.addAndDo(PTextBuffer.java:540)
e.ptextarea.PTextBuffer$Undoer.access$000(PTextBuffer.java:498)
e.ptextarea.PTextBuffer.replace(PTextBuffer.java:364)
e.ptextarea.PTextArea.append(PTextArea.java:1301)
e.edit.SimplePatchDialog.makePatchView(SimplePatchDialog.java:99)
e.edit.SimplePatchDialog.makeScrollablePatchView(SimplePatchDialog.java:32)
e.edit.ETextWindow.showPatchAndAskForConfirmation(ETextWindow.java:413)
e.edit.ETextWindow.closeWindow(ETextWindow.java:463)
e.edit.ECloseButton.actionPerformed(ECloseButton.java:54)
e.edit.EButton.mouseReleased(EButton.java:35)
java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
java.awt.Component.processMouseEvent(Component.java:6134)
javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
java.awt.Component.processEvent(Component.java:5899)
java.awt.Container.processEvent(Container.java:2023)
java.awt.Component.dispatchEventImpl(Component.java:4501)
java.awt.Container.dispatchEventImpl(Container.java:2081)
java.awt.Component.dispatchEvent(Component.java:4331)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
java.awt.Container.dispatchEventImpl(Container.java:2067)
java.awt.Window.dispatchEventImpl(Window.java:2458)
java.awt.Component.dispatchEvent(Component.java:4331)
java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
e.debug.EventDispatchThreadHangMonitor.dispatchEvent(EventDispatchThreadHangMonitor.java:191)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
<much of the same snipped>
2009-05-08T20:05:41.707-0700 Evergreen: (hang #629) event dispatch thread stuck processing event for 15m32s so far:
e.ptextarea.PTextBuffer.changeBufferLength(PTextBuffer.java:329)
e.ptextarea.PTextBuffer.expandBuffer(PTextBuffer.java:340)
e.ptextarea.PTextBuffer.insertWithoutUndo(PTextBuffer.java:384)
e.ptextarea.PTextBuffer.access$300(PTextBuffer.java:43)
e.ptextarea.PTextBuffer$Doable.removeAndInsert(PTextBuffer.java:688)
e.ptextarea.PTextBuffer$Doable.redo(PTextBuffer.java:679)
e.ptextarea.PTextBuffer$Undoer.redo(PTextBuffer.java:620)
e.ptextarea.PTextBuffer$Undoer.addAndDo(PTextBuffer.java:540)
e.ptextarea.PTextBuffer$Undoer.access$000(PTextBuffer.java:498)
e.ptextarea.PTextBuffer.replace(PTextBuffer.java:364)
e.ptextarea.PTextArea.append(PTextArea.java:1301)
e.edit.SimplePatchDialog.makePatchView(SimplePatchDialog.java:99)
e.edit.SimplePatchDialog.makeScrollablePatchView(SimplePatchDialog.java:32)
e.edit.ETextWindow.showPatchAndAskForConfirmation(ETextWindow.java:413)
e.edit.ETextWindow.closeWindow(ETextWindow.java:463)
e.edit.ECloseButton.actionPerformed(ECloseButton.java:54)
e.edit.EButton.mouseReleased(EButton.java:35)
java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:272)
java.awt.Component.processMouseEvent(Component.java:6134)
javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
java.awt.Component.processEvent(Component.java:5899)
java.awt.Container.processEvent(Container.java:2023)
java.awt.Component.dispatchEventImpl(Component.java:4501)
java.awt.Container.dispatchEventImpl(Container.java:2081)
java.awt.Component.dispatchEvent(Component.java:4331)
java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4301)
java.awt.LightweightDispatcher.processMouseEvent(Container.java:3965)
java.awt.LightweightDispatcher.dispatchEvent(Container.java:3895)
java.awt.Container.dispatchEventImpl(Container.java:2067)
java.awt.Window.dispatchEventImpl(Window.java:2458)
java.awt.Component.dispatchEvent(Component.java:4331)
java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
e.debug.EventDispatchThreadHangMonitor.dispatchEvent(EventDispatchThreadHangMonitor.java:191)
java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
it's the number of lines in the patch that matters, not the volume.
SimplePatchDialog appends each line of the patch one at a time.
there's actually no need to do that, if we kept track of the number of
characters we've seen on the lines we've processed (well, lines we want to
add to the patch; with the ediff.py call uncommented, we have "?" lines
that are only turned into highlights and don't go into the text
themselves). you could just stick the whole patch together in a
StringBuilder (which is optimized for appends in the usual way) and then
call setText when you come out of the first loop. (it's already a two-pass
deal to avoid complications when changing text with highlights in it.)
i notice also phil was a bit conservative with his MIN_BUFFER_EXTENSION
and MAX_GAP_SIZE. but since they haven't caused us trouble in the past i'm
tempted to leave them and say it's the calling code that's wrong. (a
single call to setText would avoid building up a useless undo buffer too.)
--
Elliott Hughes, http://www.jessies.org/~enh/