Hello, I'm currently migrating a module to 8.3 and I ran into a possible bug. Following the scripting-function example for ignition-sdk-examples-83 on master, I included the line
manager.addScriptModule("system.foo", new ClientScriptModule(), new PropertiesFileDocProvider());
in my DesignerHook.initializeScriptManager implementation. When a build of my module is installed with this line included, the launcher hangs. It doesn't generate any logger messages in my gateway log nor in my designerlauncher.log. When I comment that line out, the designer finishes launching.
I am currently running on the 20250408 64bit Linux build, installed on WSL2 Ubuntu.
Give me a minute to advance to that build. I do similar with my Integration Toolkit and haven't had any trouble yet.
Take a thread dump and look in the wrapper.log files.
It's likely something blocking will show up in the thread dump, or your initializeScriptManager
threw an Exception and it got logged.
1 Like
Yeah, no trouble here after update. (I did have to rebuild due to a change to the TagActor interface.)
1 Like
Thank you both for looking into this. Unfortunately I didn't find anything that could point me in the direction of what might be causing my issue. Looking into the thread dump, nothing really stood out nor was anything spiking in resource usage after about 20 minutes of letting the designer hang. I enabled trace logging on the gateway for anything that I thought might be related to the designer, but the wrapper log doesn't appear to hold anything either. To get away from any weirdness WSL2 might introduce, I installed the Apr 10 EA version locally on my Windows machine, and the same issue occurs.
Are there ways to log what the designer is doing? My understanding is that even if I put logging into my DesignerHook, the designer needs to launch successfully for me to access those logs. Would it be possible for a version of EA to log more into the designerlauncher.log file?
You can get a thread dump from the Designer using the jstack
util.
Run jps
, find the process ID for your Designer, then use jstack
to dump the threads.
Post both a Gateway and Designer thread dump here, taken while hanging.
Designer logs are a little trickier; look in ~/.ignition/clientlauncher-data/designerlauncher.log
. There will be a line starting with "Starting Java with the following parameters:". Copy the long command the comes after that, paste it into a new terminal, run it to launch a new Designer. All the logs will be dumped into the terminal as the Designer runs.
2 Likes
Hi Kevin,
Thanks for getting back to me. Running the command from the designerlauncher.log told me I was missing the RpcInterface annotation in my code. Thank you both for your help.
Hmm, I tried to reproduce (because hanging is absolutely something to avoid), and while I can get a similar error by throwing during a module's initializeScriptManager
call, and that does prevent you from opening the project entirely (bad!), the designer is still fully responsive and I got a clear error display. Were you ever able to get a thread dump while you were in this state?
Hi Paul,
Here's some of the outputs from using jstack and launching the designer from terminal. Let me know if there's anything else I can provide.
terminal_launch_designer.txt (58.0 KB)
jstack.txt (39.9 KB)
It looks like you fed jstack
the pid of the Designer Launcher and not the pid of the stalled Designer application itself.
Hey Kevin,
What I did was I tried launching from the designer and then running jps. The only Ignition related process was the designer launcher, so I did jstack on that. I probably should have tried using jps after launching from terminal, but the error message at the end told me exactly what I was looking for so I didn't bother.