# \[bug-1084\]System.tag.browse null pointer exception

**URL:** <https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697>\
**Category:** Ignition\
**Tags:** ignition81\
**Created:** [November 16, 2020, 4:31pm UTC](https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697 "2020-11-16T16:31:00Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Cory.grube](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cory.grube/32/20476_2.png) [@Cory.grube](https://forum.inductiveautomation.com/u/Cory.grube)\
**Post date:** [November 16, 2020, 4:31pm UTC](https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697/1 "2020-11-16T16:31:00Z")

</div>

I have a popup that utilizes `system.tag.browse('')` to return a list of tag providers. This worked fine in 8.0, but seemingly with an upgrade to 8.1, this began giving me a null pointer exception:

```auto
Traceback (most recent call last):
  File "<event:visionWindowOpened>", line 7, in <module>
	at com.inductiveautomation.ignition.client.script.ClientTagUtilities.browseImpl(ClientTagUtilities.java:126)
	at com.inductiveautomation.ignition.common.script.builtin.AbstractTagUtilities.browse(AbstractTagUtilities.java:345)
	at jdk.internal.reflect.GeneratedMethodAccessor296.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

	at org.python.core.Py.JavaError(Py.java:552)
	at com.inductiveautomation.ignition.client.script.ClientTagUtilities.browseImpl(ClientTagUtilities.java:140)
	at com.inductiveautomation.ignition.common.script.builtin.AbstractTagUtilities.browse(AbstractTagUtilities.java:345)
	at jdk.internal.reflect.GeneratedMethodAccessor296.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:188)
	at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction. __call__ (ScriptManager.java:523)
	at org.python.core.PyObject. __call__ (PyObject.java:497)
	at org.python.core.PyObject. __call__ (PyObject.java:501)
	at org.python.pycode._pyx363.f$0(<event:visionWindowOpened>:8)
	at org.python.pycode._pyx363.call_function(<event:visionWindowOpened>)
	at org.python.core.PyTableCode.call(PyTableCode.java:171)
	at org.python.core.PyCode.call(PyCode.java:18)
	at org.python.core.Py.runCode(Py.java:1614)
	at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:781)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.runActions(ActionAdapter.java:206)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.invoke(ActionAdapter.java:297)
	at com.inductiveautomation.factorypmi.application.binding.action.RelayInvocationHandler.invoke(RelayInvocationHandler.java:57)
	at com.sun.proxy.$Proxy50.visionWindowOpened(Unknown Source)
	at com.inductiveautomation.factorypmi.application.FPMIWindow.fireVisionWindowOpened(FPMIWindow.java:711)
	at com.inductiveautomation.factorypmi.application.VisionDesktop$RuntimeWindowOpener.openWindow(VisionDesktop.java:545)
	at com.inductiveautomation.factorypmi.application.VisionDesktop.openWindow(VisionDesktop.java:188)
	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:808)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.openWindowImpl(NavUtilities.java:336)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilities.openWindow(NavUtilities.java:326)
	at com.inductiveautomation.factorypmi.application.script.builtin.NavUtilitiesDispatcher.openWindow(NavUtilitiesDispatcher.java:143)
	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:188)
	at com.inductiveautomation.ignition.common.script.ScriptManager$ReflectedInstanceFunction. __call__ (ScriptManager.java:523)
	at org.python.core.PyObject. __call__ (PyObject.java:480)
	at org.python.core.PyObject. __call__ (PyObject.java:484)
	at org.python.pycode._pyx362.f$0(<event:actionPerformed>:7)
	at org.python.pycode._pyx362.call_function(<event:actionPerformed>)
	at org.python.core.PyTableCode.call(PyTableCode.java:171)
	at org.python.core.PyCode.call(PyCode.java:18)
	at org.python.core.Py.runCode(Py.java:1614)
	at com.inductiveautomation.ignition.common.script.ScriptManager.runCode(ScriptManager.java:781)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.runActions(ActionAdapter.java:206)
	at com.inductiveautomation.factorypmi.application.binding.action.ActionAdapter.invoke(ActionAdapter.java:297)
	at com.inductiveautomation.factorypmi.application.binding.action.RelayInvocationHandler.invoke(RelayInvocationHandler.java:57)
	at com.sun.proxy.$Proxy46.actionPerformed(Unknown Source)
	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.plaf.basic.BasicButtonListener.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(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)
Caused by: java.lang.NullPointerException
	at com.inductiveautomation.ignition.client.script.ClientTagUtilities.browseImpl(ClientTagUtilities.java:126)
	... 79 more

Ignition v8.1.0 (b2020110211)
Java: Azul Systems, Inc. 11.0.7

```

Note that I don’t get the error when providing a tag provider as the path, e.g. `system.tag.browse('[default]')`. Also note that this function seems to work fine when executed in the designer. It’s only in the Vision client that I get the exception. Possible 8.1 bug, or is this just not a supported use case for `system.tag.browse`?

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [November 16, 2020, 7:33pm UTC](https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697/2 "2020-11-16T19:33:50Z")

</div>

No issue using it here. Try deleting the client’s cache and see if that helps.

---

<div class="post-metadata">

**Author:** ![Cory.grube](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cory.grube/32/20476_2.png) [@Cory.grube](https://forum.inductiveautomation.com/u/Cory.grube)\
**Post date:** [November 16, 2020, 7:47pm UTC](https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697/3 "2020-11-16T19:47:33Z")

</div>

No luck unfortunately. Cleared my client cache and java cache for good measure, but no change in behavior.

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [November 16, 2020, 8:01pm UTC](https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697/4 "2020-11-16T20:01:04Z")

</div>

Do you have a default tag provider set on your project (I can’t imagine you don’t, but 🤷‍♂️)?  
Are there any errors being logged on the gateway when this browse fails?

---

<div class="post-metadata">

**Author:** ![Cory.grube](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/cory.grube/32/20476_2.png) [@Cory.grube](https://forum.inductiveautomation.com/u/Cory.grube)\
**Post date:** [November 16, 2020, 8:18pm UTC](https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697/5 "2020-11-16T20:18:20Z")

</div>

I actually didn’t. My project has multiple tag providers of equal significance, so I assumed was fine. Seems like setting that resolved the issue though!

More broadly, is it poor practice to not have a default tag provider configured?

---

<div class="post-metadata">

**Author:** ![paul-griffith](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/paul-griffith/32/37249_2.png) [@paul-griffith](https://forum.inductiveautomation.com/u/paul-griffith)\
**Post date:** [November 16, 2020, 9:19pm UTC](https://forum.inductiveautomation.com/t/bug-1084-system-tag-browse-null-pointer-exception/40697/6 "2020-11-16T21:19:20Z")

</div>

I definitely wouldn’t call it _bad_ practice; just unusual. Clearly, it exposed an invalid assumption on our part. I’ll file a ticket to resolve in some future version.
