Perspective Views Not Rendering

First time coming across this error, but I've somehow managed to kinda corrupt a Perspective view. Its root isn't accessible in the designer, and also can't be looked at with the Perspective Property Editor. It looks like this in the Project Browser:
image

And the view itself looks like this:

So I'm going through and editing the view's JSON file directly to some amount of success. My question though is, what does the circle icon indicate? What does the amount filled in mean, and does its orientation also suggest anything?

And on the side: what are some good practices to go about solving this kind of issue?

That usually means you've crashed the Designer's Chromium sub-process. Look for suspicious warnings in the designer's console.

1 Like

Getting stuff like this:

Do you have any wild guesses as to anything I could be doing in the designer that could cause these?

Edit: additional error message in the browser console:

That's the gateway log. I meant the designer's console. (Separate from the browser console.)

Hello, I’m having the same problem right now with Ignition 8.3.3 with Perspective, and the log from the Designer is:

13:04:03.731 [WebSocket@1511410848-41] INFO com.inductiveautomation.ignition.client.gateway_interface.GatewayConnectionManager -- WebSocket session is connected
13:04:18.693 [Designer-Startup] INFO designer.main -- Downloading... [+0]
13:04:18.765 [Designer-Startup] INFO designer.main -- Cleanup... [+72]
13:04:18.791 [Designer-Startup] INFO designer.main -- Initializing UI... [+98]
13:04:18.890 [DesignerExecEngine-1] INFO tags.subscriptions -- Changing connected quality to 'Good'
13:04:20.858 [Designer-Startup] INFO designer.main -- Starting module: Perspective [+2165]
13:04:22.539 [Designer-Startup] INFO Perspective.Designer -- Starting up Perspective module.  Mode: Trial
13:04:29.754 [Designer-Startup] INFO designer.main -- Starting module: SFC [+11061]
13:04:30.802 [Designer-Startup] INFO designer.main -- Starting module: Event Streams [+12109]
13:04:30.859 [Designer-Startup] INFO designer.main -- Starting module: Reporting [+12166]
13:04:30.907 [Designer-Startup] INFO reporting.Designer -- Starting up Reporting Module. Mode: Trial
13:04:31.118 [Designer-Startup] INFO designer.main -- Starting module: Symbol Factory [+12425]
13:04:31.120 [Designer-Startup] INFO designer.main -- Starting module: Alarm Notification [+12427]
13:04:31.191 [Designer-Startup] INFO designer.main -- Starting module: OPC-UA [+12498]
13:04:31.192 [Designer-Startup] INFO designer.main -- Starting module: Enterprise Administration [+12499]
13:04:31.203 [Designer-Startup] INFO designer.main -- Starting module: Legacy DNP3 Driver [+12510]
13:04:31.203 [Designer-Startup] INFO designer.main -- Starting module: Historian Core [+12510]
13:04:31.204 [Designer-Startup] INFO designer.main -- Starting module: SQL Bridge [+12511]
13:04:31.369 [Designer-Startup] INFO designer.main -- Initializing Scripting... [+12676]
13:04:31.436 [Designer-Startup] INFO designer.main -- Initializing UI... [+12743]
13:04:31.444 [Designer-Startup] INFO com.inductiveautomation.ignition.designer.querybrowser.QueryBrowser -- No default datasource set for project. Set default in gateway and relaunch project.
13:04:45.778 [AWT-EventQueue-0] INFO Perspective.Designer.Workspace -- Launching view with DesignerPageParams 'new', tab id 'View', using base url http://localhost:8088/data/perspective/design
13:07:57.911 [EDT-Watchdog-1] INFO edt-watchdog -- Non-responsive UI thread detected. Stack saved at '/home/.ignition/cache/gwlocalhost_8088/C0/NonResponsiveEdt-2026-01-21_130757.json'
13:08:19.542 [AWT-EventQueue-0] ERROR ViewResourceEditor -- Unhandled exception in getObjectForSave()
java.util.concurrent.ExecutionException: com.teamdev.jxbrowser.browser.BitmapTimeoutException: No bitmap returned by Chromium. This may happen when the navigation is interrupted at a very early stage. Perform another navigation and try again.
	at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getObjectForSave(ViewResourceEditor.java:481)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getObjectForSave(ViewResourceEditor.java:67)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.ResourceEditor.commit(ResourceEditor.java:180)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:324)
	at com.inductiveautomation.perspective.designer.workspace.nav.ViewNode$3.actionPerformed(ViewNode.java:493)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Container.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.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(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(Unknown Source)
	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(Unknown Source)
	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)
Caused by: com.teamdev.jxbrowser.browser.BitmapTimeoutException: No bitmap returned by Chromium. This may happen when the navigation is interrupted at a very early stage. Perform another navigation and try again.
	at com.teamdev.jxbrowser.browser.internal.BrowserImpl.bitmap(BrowserImpl.java:295)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getThumbnailBytes(ViewResourceEditor.java:398)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.lambda$getObjectForSave$3(ViewResourceEditor.java:470)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.complete(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.lambda$invokeFunction$2(JavaJsBridge.java:300)
	at com.teamdev.jxbrowser.frame.internal.FrameImpl$1.onNext(FrameImpl.java:342)
	at com.teamdev.jxbrowser.frame.internal.FrameImpl$1.onNext(FrameImpl.java:338)
	at com.teamdev.jxbrowser.internal.rpc.ServiceConnectionImpl.lambda$invokeAsync$6(ServiceConnectionImpl.java:229)
	at com.teamdev.jxbrowser.internal.RpcThreadImpl$TaskRunner.processTasks(RpcThreadImpl.java:175)
	at java.base/java.lang.Thread.run(Unknown Source)
13:08:19.545 [AWT-EventQueue-0] ERROR com.inductiveautomation.ignition.client.util.gui.ErrorUtil -- Failed to commit changes to view 'com.inductiveautomation.perspective/views/View'
java.util.concurrent.ExecutionException: com.teamdev.jxbrowser.browser.BitmapTimeoutException: No bitmap returned by Chromium. This may happen when the navigation is interrupted at a very early stage. Perform another navigation and try again.
	at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getObjectForSave(ViewResourceEditor.java:481)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getObjectForSave(ViewResourceEditor.java:67)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.ResourceEditor.commit(ResourceEditor.java:180)
	at com.inductiveautomation.ignition.designer.tabbedworkspace.TabbedResourceWorkspace.close(TabbedResourceWorkspace.java:324)
	at com.inductiveautomation.perspective.designer.workspace.nav.ViewNode$3.actionPerformed(ViewNode.java:493)
	at java.desktop/javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at java.desktop/javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at java.desktop/javax.swing.AbstractButton.doClick(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(Unknown Source)
	at java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(Unknown Source)
	at java.desktop/java.awt.AWTEventMulticaster.mouseReleased(Unknown Source)
	at java.desktop/java.awt.Component.processMouseEvent(Unknown Source)
	at java.desktop/javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.Component.processEvent(Unknown Source)
	at java.desktop/java.awt.Container.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.Component.dispatchEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.desktop/java.awt.LightweightDispatcher.dispatchEvent(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(Unknown Source)
	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(Unknown Source)
	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)
Caused by: com.teamdev.jxbrowser.browser.BitmapTimeoutException: No bitmap returned by Chromium. This may happen when the navigation is interrupted at a very early stage. Perform another navigation and try again.
	at com.teamdev.jxbrowser.browser.internal.BrowserImpl.bitmap(BrowserImpl.java:295)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.getThumbnailBytes(ViewResourceEditor.java:398)
	at com.inductiveautomation.perspective.designer.workspace.ViewResourceEditor.lambda$getObjectForSave$3(ViewResourceEditor.java:470)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.complete(Unknown Source)
	at com.inductiveautomation.perspective.designer.workspace.JavaJsBridge.lambda$invokeFunction$2(JavaJsBridge.java:300)
	at com.teamdev.jxbrowser.frame.internal.FrameImpl$1.onNext(FrameImpl.java:342)
	at com.teamdev.jxbrowser.frame.internal.FrameImpl$1.onNext(FrameImpl.java:338)
	at com.teamdev.jxbrowser.internal.rpc.ServiceConnectionImpl.lambda$invokeAsync$6(ServiceConnectionImpl.java:229)
	at com.teamdev.jxbrowser.internal.RpcThreadImpl$TaskRunner.processTasks(RpcThreadImpl.java:175)
	at java.base/java.lang.Thread.run(Unknown Source)
13:08:13.884 [EDT-Watchdog-1] INFO edt-watchdog -- Non-responsive UI thread detected. Stack saved at '/home/.ignition/cache/gwlocalhost_8088/C0/NonResponsiveEdt-2026-01-21_130813.json'
13:08:40.708 [AWT-EventQueue-0] INFO Perspective.Designer.Workspace -- Launching view with DesignerPageParams 'new', tab id 'dfg', using base url http://localhost:8088/data/perspective/design

I’m new with Linux and I don’t know if the problem is that I’m not installing the designerlauncher.tar.gz correctly :roll_eyes:. Everything is running in Oracle Linux 9.5.

Thanks!

Hi, Ja. Please edit your post and format the log using the </> button. It will limit the length of your post and provide a scrollbar for the 'code' block so we don't have to scroll down through many, many pages on the thread.

Please see Wiki - how to post code on this forum.

Thanks for the correction!

Thanks! Much neater, I'm sure you'll agree.

I believe you are running into a bug in JxBrowser that’s preventing it from starting up properly within a Wayland Desktop environment. Typically, you should be able to switch to using X11 to be able to successfully launch.

However, the release notes for Oracle Linux 9.5 indicate that X11 has been somewhat deprecated. I think the XWayland backend is always running as a bridge for X11 applications but I haven’t been able to find a way to try to force its use.

We do currently have an open ticket to upgrade the version of JxBrowser to one that contains the fix so this will be addressed.

That isn't quite correct. Search for XLibre to see the hoopla around the fork. (And very bad corporate behavior from some players.)

Thanks, I’ll take a look.

This is the release note I was basing that off of.

Thank you for you answer @avaughn

I’ve been troubleshooting this all day and I'm seeing the same issue on Debian 13.3.0. I tested different versions and the last one that works correctly is Ignition 8.3.0.

Is there a known solution? We are trying to deploy Ignition Edge 8.3.1 on Debian 13 and we’re currently stuck. Any advice would be appreciated.

From Ignition 8.3.0 to 8.3.1, the JxBrowser version went from 8.5.0 to 8.12.1.
I don't see anything in those releases that specifically mentions X vs Wayland or Linux at all, really other than an API change around Widevine: JxBrowser 8.9.0
The compatibility issue may have crept in from the constant Chromium version bumping. There's really no way off that treadmill.

In theory, you could take the drastic measure of replacing the JxBrowser files on a >=8.3.1 gateway with the older jars from an 8.3.0 gateway, and if you clear client caches we'll redownload and deliver the older version. I wouldn't really recommend it, but it might be possible. I'd recommend trying to figure out a way forward with your desktop environment. Maybe get a JxB sample application running/see if you can get more information about what's going on in an isolated context.

According to the JxBrowser release notes this issue affects versions 7.44.0, 7.44.1, 8.12.0 and 8.12.1.

I’ve seen at least one ticket come through support with the same stacktrace where they were able to force X11 to be used and that resolved the issue for them.

1 Like

Definitely interesting. I was doing some testing in VMs for various Linux distros to check compatibility (mainly was testing atomic/immutable distros), but ran into this issue and just assumed it was something with it being atomic, but eventually had the same issue on other non-atomic distros as well. I may go back to re-test with v8.3.0 and see if they all work as I'd like to find a distro I can use for panel PCs with touchscreens that works great for both Vision and Perspective.

Maybe once I get some good data and my spreadsheet populated more, I can share it on here as a Wiki so others can update it and put notes for any special tweaks to make things work. Right now with testing in a VM, I'm not able to test the touchscreen capabilities, but I was just doing it as an initial sanity check for fully functioning clients before I started going down the touchscreen testing.

We're planning to have this mentioned JxB bump get into 8.3.4, for what it's worth. Projected release mid February.