HMI Isolated Error

Hello all,

Working on a bug that my operators brought to me. Essentially, they have a motor that they can’t put in hand from their primary screen so they have to navigate away to control it manually when needed.

I’ve reviewed the design and scripts, identified a solution, and tested in the designer environment on a mock instance of the motor I generated in the PLC code. Worked well, but not perfectly, because I had to trim a little code due to there not being a real, physical machine.

Yesterday I had an opportunity to test on the actual machine due to a bit of surprise downtime. When using my laptop and designer in run mode, I was able to manipulate the motor as desired and expected. I thought ‘great, solution works on the real deal’, pushed that to the gateway and then updated the HMI station. HMI station threw a code instead of making the HOA screen appear. I snapped a picture real quick (two reasons, both for expediency because the window was small and also because I’m not sure how to copy/paste/email or IM the error to myself from a touchscreen HMI station like that) and it included the following (this is a portion, I can add more if needed):

‘‘‘

File “event:mouseReleased”, line 11, in

caused by NullPointerException: Cannot invoke “com.inductiveautomation.factorypmi.application.binding.VisionClientContext.getLocalizationManager()”

Ignition v8.1.50

‘‘‘

I saw that an earlier version (I think 8.1.14?) had a bug like this, but we’re past that version. I reviewed that line 11 and as expected no call to any localization methods. I have a very bizarre first name and used it as a name for duplicates that I was editing/testing. I can’t help but wonder if our machine says "that isn’t English, I’m going to assume localization, he look, no call to that method”.

Plan is to test at the next opportunity with my name omitted from any of the things I’m testing, but if there is a better explanation I’m all ears. Would love to get this resolved for my operators.

Thanks in advance

Please show the full details of the exception, styled here as preformatted text. (Your attempt to use preformatted text in the OP failed.)

Copy. I thought I saw a post from you yesterday while looking into this saying that it was triple single quotes. Apparently that is not the case. It was backticks. So lets try this…

Traceback (most recent call last):

File “event:mouseReleased”, line 11, in <module>
java.lang.NullPointerException: java.lang.NullPointerException: Cannot invoke "com.inductiveautomation.factorypmi.application.binding.VisionClientCon [error screen cuts off here, I don't have the rest of the line]

caused by NullPointerException: Cannot invoke “com.inductiveautomation.factorypmi.application.binding.VisionClientContext.getLocalizationManager()”

Ignition v8.1.50 (b2025093011)
Java: Azul Systems, Inc. 17.0.16

Out of curiosity, what is the stuff in () after the ignition version? Is that a license number or something?

It's a build number / date. (2025-09-30 11)

1 Like

Does it happen after doing this again? Are there any long running scripts on the page that you have?

Is that really the full details? (Extra button to click in the error popup.)

I did close it and reopen at the time, threw the error again.

Close the popup or the entire Ignition Client?

Ah- I misunderstood the ask. No, I didn’t get the full details. I’ll try again with my laptop and see if it throws an error. If the error only throws on the HMI, I’ll need to find what runs it and figure out a way to copy/paste the whole thing to me.

Traceback (most recent call last):
  File "<event:mouseReleased>", line 11, in <module>
	at com.inductiveautomation.factorypmi.application.FPMIWindow.startup(FPMIWindow.java:349)
	at com.inductiveautomation.factorypmi.application.VisionDesktop$RuntimeWindowOpener.openWindow(VisionDesktop.java:553)
	at com.inductiveautomation.factorypmi.application.VisionDesktop.openWindow(VisionDesktop.java:192)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.lambda$openWindowImpl$5(NavUtilities.java:393)
	at com.inductiveautomation.factorypmi.application.script.builtin.WindowUtilities.doGUIAction(WindowUtilities.java:851)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.openWindowImpl(NavUtilities.java:336)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.openWindow(NavUtilities.java:331)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilitiesDispatcher.openWindow(NavUtilitiesDispatcher.java:151)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
java.lang.NullPointerException: java.lang.NullPointerException: Cannot invoke "com.inductiveautomation.factorypmi.application.binding.VisionClientContext.getLocalizationManager()" because "this.appContext" is null

	at org.python.core.Py.JavaError(Py.java:545)
	at org.python.core.Py.JavaError(Py.java:536)
	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:192)
	at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction.__call__(ScriptManager.java:553)
	at org.python.core.PyObject.__call__(PyObject.java:477)
	at org.python.core.PyObject.__call__(PyObject.java:481)
	at org.python.pycode._pyx49.f$0(<event:mouseReleased>:11)
	at org.python.pycode._pyx49.call_function(<event:mouseReleased>)
	at org.python.core.PyTableCode.call(PyTableCode.java:173)
	at org.python.core.PyCode.call(PyCode.java:18)
	at org.python.core.Py.runCode(Py.java:1703)
	at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:804)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.runActions(ActionAdapter.java:207)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.invoke(ActionAdapter.java:300)
	at com.inductiveautomation.factorypmi.application.binding.action.RelayInvocationHandler.invoke(RelayInvocationHandler.java:57)
	at jdk.proxy2/jdk.proxy2.$Proxy49.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: java.lang.NullPointerException: Cannot invoke "com.inductiveautomation.factorypmi.application.binding.VisionClientContext.getLocalizationManager()" because "this.appContext" is null
	at com.inductiveautomation.factorypmi.application.FPMIWindow.startup(FPMIWindow.java:349)
	at com.inductiveautomation.factorypmi.application.VisionDesktop$RuntimeWindowOpener.openWindow(VisionDesktop.java:553)
	at com.inductiveautomation.factorypmi.application.VisionDesktop.openWindow(VisionDesktop.java:192)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.lambda$openWindowImpl$5(NavUtilities.java:393)
	at com.inductiveautomation.factorypmi.application.script.builtin.WindowUtilities.doGUIAction(WindowUtilities.java:851)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.openWindowImpl(NavUtilities.java:336)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.openWindow(NavUtilities.java:331)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilitiesDispatcher.openWindow(NavUtilitiesDispatcher.java:151)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.base/java.lang.reflect.Method.invoke(Unknown Source)
	at org.python.core.PyReflectedFunction.__call__(PyReflectedFunction.java:190)
	... 43 more

Ignition v8.1.50 (b2025093011)
Java: Azul Systems, Inc. 17.0.16


Here are the full details. Launching the project made the error trigger, so it doesn't throw in designer.

Alrighty. This is truly buried in system.nav.openWindow(). That is, IA java code. Null pointer exceptions are always bugs that should be reported to IA. Open a support ticket and include a link back to this topic.

I would be curious to know if this also occurs in the button's actionPerformed event, which would be the standard event used for such actions. (Mouse Pressed and Released events have platform-specific variant behaviors and should be avoided for most tasks.)

1 Like

Yeah, please do this. I cannot explain this behavior looking at the code.
The NPE suggests that in code that's essentially this:

if (itIsANewWindow) { 
   window.setContextField(context);
}

...other innocuous lines

if (itIsANewWindow) {
   window.startup();
}

The second condition is being met but not the first, but nothing is mutating it in between, and the context field being null in the outer class would cause all kinds of other problems.
That it's readily reproducible is a real headscratcher.

Nothing this complex. Even if you aren't using our localization/translation system anywhere, on initial startup we're walking every component to make sure its internal locale reference matches what the system expects. You can't opt out of this check or control it in any way.

10-4.

I did place a ticket but they asked for my gateway key in a follow up email. I’m not high enough on the food chain to get that information. Will that be a problem? That you and pturmel both say it needs to be looked tells me this is something that shouldn’t be ignored.

If you can log into your gateway, it shows on the licensing page.

If it's readily reproducible, you could DM me a project export.

If it requires code changes inside Vision, obviously a fix won't happen immediately, but I should be able to guide you to a workaround (since no one else has been running into this).