Teensy 4.0 First Beta Test

Status
Not open for further replies.
Has anyone tried the 3rd attempt (msg #4171) on Windows?

My best guess so far is the "StateInvariantError" may be a thread synchronization bug. The 3rd try attempts to fix that by synchronizing all the functions. If that works, the question is what does it cost in performance. On Linux, seems about the same.

Sounds promising - just getting back here ...
 
Messing with my DejaVu.ino on Mac its seems worse than try 2. Arduino will become unresponsive after only a few iterations of https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=213550&viewfull=1#post213550
I was getting a lot of GC full messages that I don't remember before. Of course now I can't seem to reproduce to post and back to around 5 iterations before weirder crash, ie its seems to be running and not 350% but can't get terminal window to open.

It doesn't seem to effect the Mac in other apps although it many times shows up on the top of the %CPU list (at about 8%) even when in the background, but only when the terminal window is open, even not printing to it. After closing the terminal window it drops back to the usual < .8% when in the background.

Still get this, while still running:
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException ...

crashes with this:
Exception in thread "Thread-108" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "JmDNS(michaels-imac.local.).State.Timer" java.lang.OutOfMemoryError: Java heap spaceException in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: GC overhead limit exceeded

The CPU usage drops down to a few % but trying to open the terminal window:
Exception in thread "AWT-EventQueue-0" Exception in thread "cc.arduino.packages.discoverers.serial.SerialDiscovery" java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space

Never completely freezes but now finally trying to open the terminal get this:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: GC overhead limit exceeded
 
Has anyone tried the 3rd attempt (msg #4171) on Windows?

My best guess so far is the "StateInvariantError" may be a thread synchronization bug. The 3rd try attempts to fix that by synchronizing all the functions. If that works, the question is what does it cost in performance. On Linux, seems about the same.

Just an Intense few minutes - but ZERO CONSOLE grief or notes after a few intense minutes. Speed maybe down a 10K or so in turns. CPU bounces 7% to 10% - no worse overall.
Same prior LPS.ino:
With and without vBat.
Some Power On/Off
TyComm Open … >> Button, Gui Reset or >> Button, Upload
USB Dongle that drops 5V on switch

I see what mjs513 means about apparent gray when active - then a lighter white when inactive background.

Can make CPU% jump with windows resize, SPASTICALLY of course using left edge:
Code:
Error, FifoDocument line search results differ!
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 5891
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent.paintForceDoubleBuffered(JComponent.java:1092)
	at javax.swing.JViewport.paintView(JViewport.java:1626)
	at javax.swing.JViewport.windowBlitPaint(JViewport.java:1549)
	at javax.swing.JViewport.setViewPosition(JViewport.java:1100)
	at javax.swing.JViewport.scrollRectToVisible(JViewport.java:436)
	at javax.swing.JComponent.scrollRectToVisible(JComponent.java:3111)
	at javax.swing.text.DefaultCaret.adjustVisibility(DefaultCaret.java:285)
	at javax.swing.text.DefaultCaret.repaintNewCaret(DefaultCaret.java:1313)
	at javax.swing.text.DefaultCaret$1.run(DefaultCaret.java:1287)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at java.lang.String.getChars(String.java:826)
	at processing.app.FifoDocument.insertString(FifoDocument.java:331)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:188)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:176)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 0
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JViewport.paint(JViewport.java:728)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent.paint(JComponent.java:1042)
	at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
	at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
	at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
	at java.awt.Container.paint(Container.java:1978)
	at java.awt.Window.paint(Window.java:3906)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:842)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 0
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JViewport.paint(JViewport.java:728)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent.paint(JComponent.java:1042)
	at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
	at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
	at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
	at java.awt.Container.paint(Container.java:1978)
	at java.awt.Window.paint(Window.java:3906)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:842)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****

Window covered as I type then a few secs later more of just these:
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****

Then just sitting and another 8 of those as I finish

<and still running BTW - but DOZENs more of those are present they just pop in 1 by 1 over short time … or a few at a time ...
 
Last edited:
No Spasms required :: serialmon_speedup_3rd_try.zip (398.4 KB, 6 views)

FOLLOW UP NOTE: 'Speedup' 2nd Try was MUCH worse with this same resize behavior once it triggered.

Restarted IDE about half screen - set on right edge
Grab left edge resize and drag left - then push right:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
	at java.lang.System.arraycopy(Native Method)
	at java.lang.String.getChars(String.java:826)
	at processing.app.FifoDocument.insertString(FifoDocument.java:331)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:188)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:176)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 0
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JViewport.paint(JViewport.java:728)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JLayeredPane.paint(JLayeredPane.java:586)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5217)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent.paint(JComponent.java:1042)
	at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:39)
	at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:79)
	at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:116)
	at java.awt.Container.paint(Container.java:1978)
	at java.awt.Window.paint(Window.java:3906)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:842)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 0
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JViewport.paint(JViewport.java:728)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Then again these roll in:
Code:
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****

Not sure it is relevant but if needed replace loop() in github\lps.ino with:
Code:
void loop() {
  //if (1) {
[B]  while (1) {[/B]
    Serial.print("count=");
    Serial.print(count);
    Serial.print(", lines/sec=");
    Serial.print(count_per_second);
   [B] if ( !(count%6) )[/B]
      Serial.println();
    count = count + 1;
    uint32_t msec = millis();
    if (msec - prior_msec > 1000) {
      //delay(1);
      // when 1 second as elapsed, update the lines/sec count
      prior_msec = prior_msec + 1000;
      count_per_second = count - prior_count;
      prior_count = count;
      delay(1);
    }
  }
}
 
Last edited:
Thanks to everyone who's running these serial monitor trial versions. The feedback really help!

Messing with my DejaVu.ino on Mac its seems worse than try 2.
.....
Never completely freezes but now finally trying to open the terminal get this:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: GC overhead limit exceeded

Looks like I still have more work to do for Macintosh. I do have a couple more ideas which should lower the GC load.

Please please please keep trying these tests. Macintosh is often the most challenging platform because things tend to manifest so differently on different Macs, plus there's a small user base. I really do want to make this work well on Mac. Your feedback really is helping.


Restarted IDE about half screen - set on right edge
Grab left edge resize and drag left - then push right:

Any chance you could make a screen recording or even a shaky cell phone video of these steps?

So far I've been running on Linux here. Can't seem to make the errors happen with pretty much any resizing, dragging, moving of the serial monitor window.


Yes, that would something interesting, monitoring two or more serial ports (or serial + seremu) with single Arduino instance.

Yes, that would be pretty awesome.

I believe the serial monitor part already has everything needed to support multiple instances. But the rest of Arduino would need changes. At least for now, I'm trying to limit my work inside the Arduino IDE's Java code to preventing the IDE from crashing. If I let this "feature creep" too much, it could be a very long time until I get back to much needed work on the Teensy side.

Some issues, like the inability to select and copy text when the window was inactive are fairly quick & easy to fix (though getting the colors right turned out to be a deep rabbit hole). I'm happy to fix those "easy" problems along the way. But the last thing we need right now is expanding this work to that "rest of Arduino" code.
 
serialmon_speedup_3rd_try.zip

iMac 2011 24GB ram, osx 10.13.6, arduino 1.8.9, td1.47

Plugin t4 with usb_serial_print_speed.ino already flashed.
Open arduino.
Open the serial monitor, anywhere between 1sec and 5min later it will stop printing lines.
After closing and reopening the monitor, printing will resume but only for a limited time, again, never longer than 5min, usually shorter than 30sec.
After closing and reopening the monitor around 8-10 times, arduino will spit out following exception.
If I now close and reopen the monitor, the monitor icon will become white, the monitor window will not open and within seconds arduino ide becomes unresponsive(processor load trough the roof) and needs to be forced quit.

Code:
Exception in thread "Thread-32" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3332)
	at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596)
	at java.lang.StringBuffer.append(StringBuffer.java:367)
	at processing.app.AbstractMonitor.addToUpdateBuffer(AbstractMonitor.java:160)
	at processing.app.inputPipeListener.run(TeensyPipeMonitor.java:205)
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3332)
	at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
	at java.lang.StringBuilder.append(StringBuilder.java:136)
	at processing.app.FifoDocument.insertString(FifoDocument.java:187)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:188)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:176)
	at processing.app.AbstractTextMonitor$$Lambda$175/830057316.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 
I'm running it here on my Macbook Air. This is my main frustration with developing for Macintosh... it works perfectly when I try here. No OutOfMemoryError exceptions, after ~15 minutes running. It even manages about 300K lines/sec, 50% faster than Windows and Linux! Sure, it's enough CPU use to make my little Mac Air's fan spin loudly, but working perfectly. Grrrrr.......

I do want to make this run well on *all* Macs. I'm really depending on your feedback, since I can't make the memory exceptions happen here on my Mac.

sc.jpg
(click for full size)
 
I have a older imac (I think) I can try and get things running on what do I need to run to test this? what to run on the teensy what to download and run on the mac?
 
Paul, I just tried simple app on my older Mac,
Code:
void setup() {
  // put your setup code here, to run once:
  while(!Serial && millis() < 4000);
  Serial.begin(115200);

}
uint32_t loop_counter = 0;
void loop() {
  // put your main code here, to run repeatedly:
  Serial.printf("Loop Count: %d\n", loop_counter++);
}
I am not much of a MAC person, but I think I think I have the jar at the right place:
And I am crashing...
Code:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at javax.swing.text.GapContent.allocateArray(GapContent.java:94)
	at javax.swing.text.GapVector.resize(GapVector.java:214)
	at javax.swing.text.GapVector.shiftEnd(GapVector.java:229)
	at javax.swing.text.GapContent.shiftEnd(GapContent.java:345)
	at javax.swing.text.GapVector.open(GapVector.java:201)
	at javax.swing.text.GapVector.replace(GapVector.java:142)
	at javax.swing.text.GapContent.insertString(GapContent.java:132)
	at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:723)
	at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:707)
	at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:185)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:175)
	at processing.app.AbstractTextMonitor$$Lambda$180/1398117546.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at javax.swing.text.GapContent.allocateArray(GapContent.java:94)
	at javax.swing.text.GapVector.resize(GapVector.java:214)
	at javax.swing.text.GapVector.shiftEnd(GapVector.java:229)
	at javax.swing.text.GapContent.shiftEnd(GapContent.java:345)
	at javax.swing.text.GapVector.open(GapVector.java:201)
	at javax.swing.text.GapVector.replace(GapVector.java:142)
	at javax.swing.text.GapContent.insertString(GapContent.java:132)
	at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:723)
	at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:707)
	at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:185)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:175)
	at processing.app.AbstractTextMonitor$$Lambda$180/1398117546.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at javax.swing.text.GapContent.allocateArray(GapContent.java:94)
	at javax.swing.text.GapVector.resize(GapVector.java:214)
	at javax.swing.text.GapVector.shiftEnd(GapVector.java:229)
	at javax.swing.text.GapContent.shiftEnd(GapContent.java:345)
	at javax.swing.text.GapVector.open(GapVector.java:201)
	at javax.swing.text.GapVector.replace(GapVector.java:142)
	at javax.swing.text.GapContent.insertString(GapContent.java:132)
	at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:723)
	at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:707)
	at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:185)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:175)
	at processing.app.AbstractTextMonitor$$Lambda$180/1398117546.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at javax.swing.text.GapContent.allocateArray(GapContent.java:94)
	at javax.swing.text.GapVector.resize(GapVector.java:214)
	at javax.swing.text.GapVector.shiftEnd(GapVector.java:229)
	at javax.swing.text.GapContent.shiftEnd(GapContent.java:345)
	at javax.swing.text.GapVector.open(GapVector.java:201)
	at javax.swing.text.GapVector.replace(GapVector.java:142)
	at javax.swing.text.GapContent.insertString(GapContent.java:132)
	at javax.swing.text.AbstractDocument.handleInsertString(AbstractDocument.java:723)
	at javax.swing.text.AbstractDocument.insertString(AbstractDocument.java:707)
	at javax.swing.text.PlainDocument.insertString(PlainDocument.java:130)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:185)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:175)
	at processing.app.AbstractTextMonitor$$Lambda$180/1398117546.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space

Mac Book Pro, Early 2013 version, Mojave 10.14.6
 
what to run on the teensy what to download and run on the mac?

Start with Arduino 1.8.9, make sure you run it at least once to get past the warning about downloaded from the internet. Quit Arduino, then install Teensyduino 1.47. Feel free to run it again if you like, though not required. You can click Arduino > About to check the version.

To make the change, control-click on Arduino and choose "Show Package Contents". That will open a new Finder window, which shows the internal files and folders inside Arduino. Then naviate into the Contents folder, then the Java folder. In there, you'll find "pde.jar". That's the file you replace.


I am not much of a MAC person, but I think I think I have the jar at the right place:
And I am crashing...
Code:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at javax.swing.text.GapContent.allocateArray(GapContent.java:94)[/QUOTE]

Nope, that's the original serial monitor.  The new one replaces "GapContent" with "FifoDocument".  If you're seeing "GapContent" in the Java errors, that's sure sign you're not running the new code.
 
I'm running it here on my Macbook Air. This is my main frustration with developing for Macintosh... it works perfectly when I try here. No OutOfMemoryError exceptions, after ~15 minutes running. It even manages about 300K lines/sec, 50% faster than Windows and Linux! Sure, it's enough CPU use to make my little Mac Air's fan spin loudly, but working perfectly. Grrrrr.......

I do want to make this run well on *all* Macs. I'm really depending on your feedback, since I can't make the memory exceptions happen here on my Mac.

View attachment 17315
(click for full size)

That screen shot shows Teensy 3.2 at bottom?
 
Thanks Paul, Earlier I simply renamed the old pde.jar to pde.jar.save and then moved the file in from downloads.
I believe it went into the java folder under the contents...

This time I deleted both files (moved to trash), and then copied it in. So far no crash messages, but it has stopped outputting...

Heard the fan turn on, but has been stuck at about output line: 30851812 (actually did not output the 12) but line before was 11...

And has set there for a couple minutes now.

Update: I ended that run and killed off arduino app... I then restarted it and this time got an error message:
Code:
Board at usb:14200000 is not available
Error, FifoDocument line search results differ!
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 25059
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent.paintForceDoubleBuffered(JComponent.java:1092)
	at javax.swing.JViewport.paintView(JViewport.java:1626)
	at javax.swing.JViewport.windowBlitPaint(JViewport.java:1549)
	at javax.swing.JViewport.setViewPosition(JViewport.java:1100)
	at javax.swing.JViewport.scrollRectToVisible(JViewport.java:436)
	at javax.swing.JComponent.scrollRectToVisible(JComponent.java:3111)
	at javax.swing.text.DefaultCaret.adjustVisibility(DefaultCaret.java:285)
	at javax.swing.text.DefaultCaret.repaintNewCaret(DefaultCaret.java:1313)
	at javax.swing.text.DefaultCaret$1.run(DefaultCaret.java:1287)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 25059
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JViewport.paint(JViewport.java:728)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException
	at java.lang.String.getChars(String.java:826)
	at processing.app.FifoDocument.insertString(FifoDocument.java:331)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:186)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:176)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 0
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JViewport.paint(JViewport.java:728)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 0
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JViewport.paint(JViewport.java:728)
	at javax.swing.JComponent.paintChildren(JComponent.java:889)
	at javax.swing.JComponent.paint(JComponent.java:1065)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
 
That screen shot shows Teensy 3.2 at bottom?

Yup, I just unplugged the already-programmed Teensy 4.0 from my Linux desktop, plugged it into the Macbook Air, and opened the serial monitor.

Do you suppose the result would be different if I actually compiled the benchmark on my Mac?
 
Yup, I just unplugged the already-programmed Teensy 4.0 from my Linux desktop, plugged it into the Macbook Air, and opened the serial monitor.

Do you suppose the result would be different if I actually compiled the benchmark on my Mac?

I have no idea. Just thought you might have had a brain fart:)
 
iMac 2011 24GB ram, osx 10.13.6, arduino 1.8.9, td1.47

Plugin t4 with usb_serial_print_speed.ino already flashed.
Open arduino.
Open the serial monitor, anywhere between 1sec and 5min later it will stop printing lines.
After closing and reopening the monitor, printing will resume but only for a limited time, again, never longer than 5min, usually shorter than 30sec.
After closing and reopening the monitor around 8-10 times, arduino will spit out following exception.
If I now close and reopen the monitor, the monitor icon will become white, the monitor window will not open and within seconds arduino ide becomes unresponsive(processor load trough the roof) and needs to be forced quit.
Tested on a second machine,
MacBook Pro, early 2011, i7 2.2GHz, 4GB ram, osx 10.13.6, arduino 1.8.9, td1.47
Same procedure, no exceptions thrown, but the the serial monitor did stop about 3 times, after that it happily ran for 15min until I had to stop to prevent a thermal meltdown.
Let machine cool down, reopen arduino and repeat test, same result as above.
Repeat a third time, and now serial monitor runs for 15min straight without a hitch.

+-120000 lines/sec on both machines.
 
I'm working on a way to make this much more efficient. Turns out the data comes into Arduino and gets copied around several times before ending up inside the FifoDocument buffer. My gut feeling is that copying process is what's putting so much pressure on the Jaca garbage collector. Why it goes so badly on some Macs, I don't know. But it's rather inefficient on all platforms, even with FifoDocument replacing the horribly inefficient GapContent storage.

Please keep following this thread. All this testing and feedback, especially on Macintosh, is really helping. I hope to have another test version later today or tomorrow morning.
 
Tested on a third machine, with different os.
MacBook Pro, early 2011, i7 2.0GHz, 8GB ram, osx 10.12.6, arduino 1.8.9, td1.47.
Same behaviour as on the iMac.
Code:
Exception in thread "Thread-30" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3332)
	at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:596)
	at java.lang.StringBuffer.append(StringBuffer.java:367)
	at processing.app.AbstractMonitor.addToUpdateBuffer(AbstractMonitor.java:160)
	at processing.app.inputPipeListener.run(TeensyPipeMonitor.java:205)
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3332)
	at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:124)
	at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:448)
	at java.lang.StringBuilder.append(StringBuilder.java:136)
	at processing.app.FifoDocument.insertString(FifoDocument.java:187)
	at javax.swing.JTextArea.append(JTextArea.java:477)
	at processing.app.AbstractTextMonitor.updateTextArea(AbstractTextMonitor.java:188)
	at processing.app.AbstractTextMonitor.lambda$message$0(AbstractTextMonitor.java:176)
	at processing.app.AbstractTextMonitor$$Lambda$182/83391012.run(Unknown Source)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Sadly enough, I don't have any machine that is compatible with osx 10.14 and up.
 
Thanks to everyone who's running these serial monitor trial versions. The feedback really help!

defragster
Restarted IDE about half screen - set on right edge
Grab left edge resize and drag left - then push right:
Any chance you could make a screen recording or even a shaky cell phone video of these steps?

So far I've been running on Linux here. Can't seem to make the errors happen with pretty much any resizing, dragging, moving of the serial monitor window.

It really is as easy as it sounds … setup running clean … click hold the edge … drag left ( usually okay ) … drag right to start position and 'BAM' … sometime it may take 2-3 cycles.

Moving files to SurfaceBook to try repro there and will update.

Posted by WMXZ
Yes, that would something interesting, monitoring two or more serial ports
Yes, that would be pretty awesome.

I believe the serial monitor part already has everything needed to support multiple instances. …

I got/you gave the idea the teensy_sermon wasn't JAVA - it has the external exe - was hoping there was a way to CMDLINE params to have it open 2nd port …
Until it can do multiples I'll keep using TyComm for that reason. Not found a good 2nd SerMon to use. Hoping @koromix has time to update that from Beta drop as it works well and has a couple other features that make Teensy more cooler.

Speaking of @koromix - has the T4 'time pass on upload' code/method been exposed?
 
Got a copy on surface book: Win 10 w/i7-6600U and 8 GB RAM, no GPU but Intel HD 520

Running the 6 per line lps.ino edit above, does No Fault Repro on Resize or other - left alone a bit and the entirety of the console shows just this after some time - no other info or instances even after more resize drag:
Code:
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****

This battery friendly "U" CPU is a bit slower than desktop but JAVA CPU % still under 20% - less when window smaller. And Lines/sec count at 200K or over. This machine is single display, not multimon

Interesting to see the data does comes in through IDE and routed before getting to SerMon - amazing it works this well
 
Put the same copy of Arduino folder from my desktop on my SurfaceBook and then on my wife's Surface Pro [ i7-7600U w/16GB RAM, and Intel Iris GPU - better SPEC's and smaller screen also Single Display]

NO REPRO - in fact the IDE console never showed anything on the SurfacePro with any amount of resize dragging or Button and repower of the T4B2.


Return that bare T4B2 to my desktop - open IDE fresh and T_sermon {no T_loader or TyComm open} - one drag left and:
Code:
Error, FifoDocument line search results differ!
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 5175
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent.paintForceDoubleBuffered(JComponent.java:1092)
	at javax.swing.JViewport.paintView(JViewport.java:1626)
	at javax.swing.JViewport.windowBlitPaint(JViewport.java:1549)
	at javax.swing.JViewport.setViewPosition(JViewport.java:1100)
	at javax.swing.JViewport.scrollRectToVisible(JViewport.java:436)
	at javax.swing.JComponent.scrollRectToVisible(JComponent.java:3111)
	at javax.swing.text.DefaultCaret.adjustVisibility(DefaultCaret.java:285)
	at javax.swing.text.DefaultCaret.repaintNewCaret(DefaultCaret.java:1313)
	at javax.swing.text.DefaultCaret$1.run(DefaultCaret.java:1287)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
 
I started the 3rd attempt running this morning and left it for a couple of hours. No errors at all, even when dragging/resizing the monitor window.
But then I wanted to run a different sketch on a k66 at the same. I plugged in the k66 - no problem. But then I changed the processor from T4 to T3.6 and that immediately caused the Java messages that I, and others, reported previously. This is on Windows 10 Pro.

Pete
 
Here's a 4th test, but only for Macintosh machines with OutOfMemoryError errors on the first 3 tries.

Lots of stuff is broken in this one, so please everyone else sit this one out. The 1 and only question for the 4th try is whether Macs getting the OutOfMemoryError can sustain this without Java running out of memory.

If you get a "thread interrupted" error, just restart the serial monitor. That is one of *many* known problems in this version. AutoScroll doesn't turn off, text selection is not working right, just to name a few things I broke. But I did get the arriving data to go right into the fifo buffer without getting copied several times.

The big question is whether this major change (which broke almost everything) solves the OutOfMemoryError on Macs, and I should push forward with trying to fix everything... or if it's no better (or even worse) and I should just abandon this path.
 

Attachments

  • serialmon_speedup_4th_try.zip
    400.7 KB · Views: 91
(I can follow directions and did not download Try#4 to my Win PC, it did not break anything :) )

UPDATE> re p#4196 - the T4B2 unit on desktop : various gyrations and efforts did NOT add any more console output and sitting almost an hour. That is good - single instance of trouble.

So I unpowered that back to the repowered T4B2M that was in used. It took some effort of resize to generate a single 'Exception' instance - then leaving it sit for some minutes I have about 2 Dozen 'Neg # Error' notes

Try#3 t_sermon is quite robust and effective and much improved from prior use at lower speeds. If you could just 'hide console error text' that is intermittent - at least on Windows all seems better.

I just Went back to internal IDE editor and removed the replacement to TyComm - so multilple IDE uploads to T4B2M were no issue and no Errors on resize.

NOTE: Win 10 has an xBox CAPTURE tool that only focuses on a single window - but it is active in fact RetroActive at capturing screen draw for prior 30 seconds - but only for a single window (and fixed size at start) so can't capture the resize and whole screen. Not looked/seen how to disable it, or if it is active on the Surface computers. Not sure if this xBox app might be helping stall the system as the GUI Spew is recorded on this machine.

RE @el_Supremo: Plugged in T_3.6, changed board and then the prior error page shows in console. t-Sermon still showing T4 as the port not changed.

Changed Port and upload and T_3.6 giving 27K lps [with 6 wide display].

Move back to T_4 and no error on change, upload starts at 230K lps. Some few movements with corner resize and T4 output did give an error - but IDE remains healthy and under 10% doing the 235K +/- lps spew. Just recurring 'Neg # Err'

Then again selecting 'Board T_3.6' generates the page of Console Error text as noted in p#4197
 
Last edited:
serialmon_speedup_4th_try.zip

iMac 2011 24GB ram, osx 10.13.6, arduino 1.8.9, td1.47

Plugin t4 with usb_serial_print_speed.ino already flashed.
Open arduino.
Open the serial monitor, sometime later it will stop printing lines.
Close the serial monitor and get following exepction
Code:
inputPipeListener exception: java.lang.InterruptedException: sleep interrupted
java.lang.InterruptedException: sleep interrupted
	at java.lang.Thread.sleep(Native Method)
	at processing.app.inputPipeListener.run(TeensyPipeMonitor.java:234)
inputPipeListener thread exit
Reopen serialmon and keep repeating.
Attempt 1, 2 stops printing after max 30sec.
Attempt 3, 4, 5, 6 last between 2 to 8min.
From attempt 5 scrolling smoothness is gradually degrading and arduino processor load is increasing.
The 7th time opening serialmon the scrolling is unbearable. Something like 100-200milisec printing and 4-5sec pausing.
Now I close serialmon before it stops printing and get following exepction
Code:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at processing.app.FifoDocument.<init>(FifoDocument.java:136)
	at processing.app.TextAreaFIFO.<init>(TextAreaFIFO.java:42)
	at processing.app.AbstractTextMonitor.onCreateWindow(AbstractTextMonitor.java:57)
	at processing.app.AbstractMonitor.<init>(AbstractMonitor.java:55)
	at processing.app.AbstractTextMonitor.<init>(AbstractTextMonitor.java:47)
	at processing.app.TeensyPipeMonitor.<init>(TeensyPipeMonitor.java:51)
	at cc.arduino.packages.MonitorFactory.newMonitor(MonitorFactory.java:51)
	at processing.app.Editor.handleSerial(Editor.java:2261)
	at processing.app.EditorToolbar.handleSelectionPressed(EditorToolbar.java:503)
	at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:448)
	at java.awt.Component.processMouseEvent(Component.java:6536)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4532)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)

Now quit and reopen arduino and start again.
Attempt 1..6, same as above
Attempt 7, scrolling is still bearable, throws a differnt exception after less than 30sec, while printing continues for a few more minutes.
Code:
FifoDocument.getText *****NEGATIVE NUMBER ERROR*****
Exception in thread "AWT-EventQueue-0" javax.swing.text.StateInvariantError: Can't render line: 20
	at javax.swing.text.PlainView.drawLine(PlainView.java:92)
	at javax.swing.text.PlainView.paint(PlainView.java:311)
	at javax.swing.plaf.basic.BasicTextUI$RootView.paint(BasicTextUI.java:1434)
	at javax.swing.plaf.basic.BasicTextUI.paintSafely(BasicTextUI.java:737)
	at javax.swing.plaf.basic.BasicTextUI.paint(BasicTextUI.java:881)
	at javax.swing.plaf.basic.BasicTextUI.update(BasicTextUI.java:860)
	at javax.swing.JComponent.paintComponent(JComponent.java:780)
	at javax.swing.JComponent.paint(JComponent.java:1056)
	at javax.swing.JComponent.paintToOffscreen(JComponent.java:5210)
	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered(RepaintManager.java:1579)
	at javax.swing.RepaintManager$PaintManager.paint(RepaintManager.java:1502)
	at javax.swing.RepaintManager.paint(RepaintManager.java:1272)
	at javax.swing.JComponent._paintImmediately(JComponent.java:5158)
	at javax.swing.JComponent.paintImmediately(JComponent.java:4969)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:831)
	at javax.swing.RepaintManager$4.run(RepaintManager.java:814)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:814)
	at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:789)
	at javax.swing.RepaintManager.prePaintDirtyRegions(RepaintManager.java:738)
	at javax.swing.RepaintManager.access$1200(RepaintManager.java:64)
	at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1732)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Attempt 8, scrolling is struggling, arduino processor load is at 292% and serialmon at 30%(from 85% in the first attempts). Stops after 8min and again the *****NEGATIVE NUMBER ERROR*****
Attempt 9..n, throws an exception every time the serialmon icon is clicked but the window does not open anymore.
Code:
Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: Java heap space
	at processing.app.FifoDocument.<init>(FifoDocument.java:136)
	at processing.app.TextAreaFIFO.<init>(TextAreaFIFO.java:42)
	at processing.app.AbstractTextMonitor.onCreateWindow(AbstractTextMonitor.java:57)
	at processing.app.AbstractMonitor.<init>(AbstractMonitor.java:55)
	at processing.app.AbstractTextMonitor.<init>(AbstractTextMonitor.java:47)
	at processing.app.TeensyPipeMonitor.<init>(TeensyPipeMonitor.java:51)
	at cc.arduino.packages.MonitorFactory.newMonitor(MonitorFactory.java:51)
	at processing.app.Editor.handleSerial(Editor.java:2261)
	at processing.app.EditorToolbar.handleSelectionPressed(EditorToolbar.java:503)
	at processing.app.EditorToolbar.mousePressed(EditorToolbar.java:448)
	at java.awt.Component.processMouseEvent(Component.java:6536)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6304)
	at java.awt.Container.processEvent(Container.java:2239)
	at java.awt.Component.dispatchEventImpl(Component.java:4889)
	at java.awt.Container.dispatchEventImpl(Container.java:2297)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4532)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
	at java.awt.Container.dispatchEventImpl(Container.java:2283)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4711)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:760)
	at java.awt.EventQueue.access$500(EventQueue.java:97)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.awt.EventQueue$3.run(EventQueue.java:703)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
	at java.awt.EventQueue$4.run(EventQueue.java:733)
	at java.awt.EventQueue$4.run(EventQueue.java:731)
game over
 
Status
Not open for further replies.
Back
Top