[Bug-1203] Designer Chromium Crash with Exit Code 139 on MacOS Big Sur

Seems to be a bit of a strange error and seemingly random. Every so often I get an error in my designer that Chromium has crashed. I haven’t been tracking how long the Designer runs before the crash but seems to be about every 2-3 hours. The Designer has to be restarted to get Perspective working again. I hadn’t worked with Perspective in a while but i’ve had about 2-3 crashes per day since I started working with it again. I don’t see anything that pops up in the gateway logs, just the error in the Designer console:

20:25:46.168 ERROR Chromium process exit code: 139
20:25:46.269 [Thread-17] ERROR com.teamdev.jxbrowser - Chromium process exit code: 139
20:25:51.868 [Thread-17] ERROR designer.JXBrowserUtil - Browser Engine has reported a crash with exit code 139: EngineCrashed{exitCode=139}

Running Ignition 8.1.5 (but also happened on 8.1.3). Designer is running on a 2015 Macbook Pro running MacOS 11.3. I tried reinstalling the Designer Launcher to see if that would have any impact but no luck.

Any ideas on things I can check or logs that would be helpful?

Edit: I forgot to add that I get the following errors when I try to exit the Designer (without saving) and end up having to force quit:

23:18:08.411 [AWT-EventQueue-0] ERROR com.inductiveautomation.ignition.client.util.gui.ErrorUtil - null
java.util.concurrent.TimeoutException: null
	at java.base/java.util.concurrent.CompletableFuture.timedGet(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getObjectForSave(ViewResourceEditor.java:434)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getObjectForSave(ViewResourceEditor.java:63)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.ResourceEditor.commit(ResourceEditor.java:160)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:284)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:271)
	at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.lambda$shutdown$1(ViewWorkspace.java:636)
	at java.base/java.util.ArrayList.forEach(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.shutdown(ViewWorkspace.java:636)
	at com.inductiveautomation.perspective.designer.DesignerHook.shutdown(DesignerHook.java:360)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$LoadedModule.shutdown(IgnitionDesigner.java:1928)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.cleanup(IgnitionDesigner.java:911)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.shutdown(IgnitionDesigner.java:496)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleExit(IgnitionDesigner.java:3044)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$3.windowClosing(IgnitionDesigner.java:354)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.Window.processWindowEvent(Unknown Source)
	at java.desktop/javax.swing.JFrame.processWindowEvent(Unknown Source)
	at java.desktop/java.awt.Window.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
23:18:08.752 [AWT-EventQueue-0] ERROR Perspective.Designer.Workspace - Could not unregister the bridge's edit action handler for a view on deactivate
java.lang.IllegalArgumentException: missing event subscriber for an annotated method. Is com.inductiveautomation.perspective.designer.JavaJsBridgeEditActionHandler@d28d614 registered?
	at com.google.common.eventbus.SubscriberRegistry.unregister(SubscriberRegistry.java:111)
	at com.google.common.eventbus.EventBus.unregister(EventBus.java:201)
	at com.inductiveautomation.perspective.designer.workspace.design.BrowserPanel.onDeactivate(BrowserPanel.java:858)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.notifyDeactivated(ViewResourceEditor.java:532)
	at com.inductiveautomation.perspective.designer.workspace.PerspectiveWorkspaceListener.editorSelected(PerspectiveWorkspaceListener.java:73)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace$3.stateChanged(TabbedResourceWorkspace.java:115)
	at java.desktop/javax.swing.DefaultSingleSelectionModel.fireStateChanged(Unknown Source)
	at com.jidesoft.swing.JideTabbedPane$IgnoreableSingleSelectionModel.fireStateChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultSingleSelectionModel.setSelectedIndex(Unknown Source)
	at java.desktop/javax.swing.JTabbedPane.setSelectedIndexImpl(Unknown Source)
	at java.desktop/javax.swing.JTabbedPane.removeTabAt(Unknown Source)
	at com.jidesoft.swing.JideTabbedPane.removeTabAt(Unknown Source)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:293)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:271)
	at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.lambda$shutdown$1(ViewWorkspace.java:636)
	at java.base/java.util.ArrayList.forEach(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.shutdown(ViewWorkspace.java:636)
	at com.inductiveautomation.perspective.designer.DesignerHook.shutdown(DesignerHook.java:360)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$LoadedModule.shutdown(IgnitionDesigner.java:1928)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.cleanup(IgnitionDesigner.java:911)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.shutdown(IgnitionDesigner.java:496)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleExit(IgnitionDesigner.java:3044)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$3.windowClosing(IgnitionDesigner.java:354)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.Window.processWindowEvent(Unknown Source)
	at java.desktop/javax.swing.JFrame.processWindowEvent(Unknown Source)
	at java.desktop/java.awt.Window.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.IllegalStateException
	at com.teamdev.jxbrowser.deps.com.google.common.base.Preconditions.checkState(Preconditions.java:492)
	at com.teamdev.jxbrowser.internal.CloseableImpl.checkNotClosed(CloseableImpl.java:34)
	at com.teamdev.jxbrowser.zoom.internal.ZoomImpl.level(ZoomImpl.java:44)
	at com.inductiveautomation.perspective.designer.workspace.design.BrowserPanel.syncZoomIndicator(BrowserPanel.java:846)
	at com.inductiveautomation.perspective.designer.workspace.design.BrowserPanel.onActivate(BrowserPanel.java:821)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.notifyActivated(ViewResourceEditor.java:515)
	at com.inductiveautomation.perspective.designer.workspace.PerspectiveWorkspaceListener.editorSelected(PerspectiveWorkspaceListener.java:80)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace$3.stateChanged(TabbedResourceWorkspace.java:115)
	at java.desktop/javax.swing.DefaultSingleSelectionModel.fireStateChanged(Unknown Source)
	at com.jidesoft.swing.JideTabbedPane$IgnoreableSingleSelectionModel.fireStateChanged(Unknown Source)
	at java.desktop/javax.swing.DefaultSingleSelectionModel.setSelectedIndex(Unknown Source)
	at java.desktop/javax.swing.JTabbedPane.setSelectedIndexImpl(Unknown Source)
	at java.desktop/javax.swing.JTabbedPane.removeTabAt(Unknown Source)
	at com.jidesoft.swing.JideTabbedPane.removeTabAt(Unknown Source)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:293)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:271)
	at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.lambda$shutdown$1(ViewWorkspace.java:636)
	at java.base/java.util.ArrayList.forEach(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.ViewWorkspace.shutdown(ViewWorkspace.java:636)
	at com.inductiveautomation.perspective.designer.DesignerHook.shutdown(DesignerHook.java:360)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$LoadedModule.shutdown(IgnitionDesigner.java:1928)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.cleanup(IgnitionDesigner.java:911)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner.shutdown(IgnitionDesigner.java:496)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$Handler.handleExit(IgnitionDesigner.java:3044)
	at com.inductiveautomation.ignition.designer.IgnitionDesigner$3.windowClosing(IgnitionDesigner.java:354)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.windowClosing(Unknown Source)
	at java.desktop/java.awt.Window.processWindowEvent(Unknown Source)
	at java.desktop/javax.swing.JFrame.processWindowEvent(Unknown Source)
	at java.desktop/java.awt.Window.processEvent(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Window.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$4.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.desktop/java.awt.EventQueue$5.run(Unknown Source)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
	at java.desktop/java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.desktop/java.awt.EventDispatchThread.run(Unknown Source)

Unfortunately I believe this issue to be specific to MacOS 11+ (Big Sur), and potentially the Chromium version embedded in JxBrowser. We have an internal ticket open, although I’m not sure what the time line is on a resolution.

1 Like

Thanks Jeff. I’m just happy to know I’m not the only one seeing this issue!

I’m seeing it as well on Big Sur with an 2015 Intel Macbook Pro.

1 Like

Just curious if there is any update on this?

We’re actively working to update JXBrowser to a version that adds support for Big Sur. We believe this will address this particular crash, but will have to confirm with testing once the update is complete.

1 Like

Not positive (could be coincidence or mind numbing frustration…), but this seems to have gotten worse with MacOS 11.4. I’m lucky if I make it 15-30 minutes without crashing…

I don’t mean to keep pinging this topic, but any update on this bug? I’ve had 3 crashes in the last hour… Any recommendations for things that I can do to reduce the frequency of these crashes (besides buying a PC :face_vomiting: or Linux machine…)? Downgrading to an older MacOS is, sadly, not an option at this time…

I’m still proving out Perspective before we purchase the module for a couple of our licenses and I won’t be able to get approval until I can adequately support our deployments.

We were waiting on the upstream library to release an update, because we ran into other issues with the update Jeff mentioned testing earlier in this thread.

That latest update was just released last week, and is on the short-list to be added; possibly as soon as 8.1.9.

1 Like

Awesome, thanks @PGriffith! Somewhat related, has there been any in house testing on M1 Macs? We’re looking to replace some Mac Mini’s and I’ll likely be upgrading my laptop within the next year.

any news on this? not noticing any difference in 8.1.9, lots of frequent crashes on mac os.

This change hasn’t landed yet, but hopefully will soon :tm:, along with a batch of performance improvements for the designer. As you might imagine, the regression risk is high, so there’s a lot of back and forth with QA.