Random Blank Menu Tree in Ignition Perspective workstation (v8.1.47) – Need Root Cause and Solution

Hello Everyone,

We are facing an intermittent issue in our Ignition Perspective application where the Menu Tree occasionally becomes completely blank. The issue occurs randomly and is not consistently reproducible.

Environment

  • Ignition Gateway Version: 8.1.47
  • Perspective Workstation Version: 8.1.43
  • Also tested with Perspective Workstation 8.1.47, but the same issue is observed.

Issue Description

  • The Menu Tree loads and works normally most of the time.
  • However, at random intervals, the entire Menu Tree becomes blank, and no menu items are displayed.
  • The issue is intermittent and does not follow any specific sequence or user action.
  • Restarting or refreshing the session usually restores the Menu Tree, but the issue reappears randomly.

Is the menu tree dynamically generated? If so, add try - except clauses to the scripts, and log errors. (Use double except clauses to catch both java and jython exceptions.)

menu is dynamically generated and we used try- except cluse

Show your binding and your code.

MenuTree_2026-07-14_1944.zip (40.9 KB)

i have attached the menu tree export zip file

You have a view startup event that is throwing an exception, but that is lost because the script is missing from your export. The event modifies the menu item list.

But anyways, you should not be writing your own logging framework. Use native Ignition loggers and hand tracebacks to them.

ok than you i will do that, but is there any issue with version 8.1.43 or 8.1.47

please check startup script as below:

def runAction(self):
try:
for i in self.getChild("root").getChild("MenuTree").props.items:
i.style.backgroundColor = 'transparent'
i.style.color = '#ffffff'
i.label.icon.color = '#ffffff'

    system.perspective.navigate('/')

if self.session.props.auth.user.userName is None:

system.tag.writeBlocking(['[default]SCADA_Common/UserName'], 'no user')

else:

system.tag.writeBlocking(['[default]SCADA_Common/UserName'], self.session.props.auth.user.userName)

    system.perspective.sendMessage("msg_RefreshMenuTree", payload={}, scope='view')
    # Insert User Action Log
    \_0000_Logs.AuditLogs.AuditLogs.InsertAuditLog( 
                    self
                    , eventType = 'System'
                    , areaOfTag = "Startup"
                    , tagAction = 'Start SCADA !' 
                    , oldValue = \_0000_Logs.AuditLogs.EventScada.ScadaEvents("oldValue")    
                    , newValue = \_0000_Logs.AuditLogs.EventScada.ScadaEvents("newValue")    
                    )
                
except:
    \_0000_Logs.ErrorLogs.ErrorLogs.InsertErrorLog( 
                    sys.exc_info(),
                    logType = 1, 
                    viewPath = 'Header_Menu_Tree/MenuTree',
                    logEvent = "onStartup",
                    logObjectType = "EventScript"
                    )

I looked at the script and there's nothing I can debug given your custom logger. (You should also fix your posted script's formatting--Please see Wiki - how to post code on this forum).