com.jniwrapper.win32.MessageLoopThread error

Hi

I got following error in console every second? Everything is still running nicely?
What can cause this…

Time	Logger	Message
18:15:03	com.jniwrapper.win32.MessageLoopThread	Failed to post the message to the thread. ThreadID = 2924, errorCode = 1444

com.jniwrapper.win32.LastErrorException: Invalid thread identifier.
at com.jniwrapper.win32.MessageLoopThread$LoopThread.postThreadMessage(MessageLoopThread.java:390)
at com.jniwrapper.win32.MessageLoopThread.postSyncThreadMessage(MessageLoopThread.java:338)
at com.jniwrapper.win32.MessageLoopThread.postSyncThreadMessage(MessageLoopThread.java:331)
at com.jniwrapper.win32.MessageLoopThread$LoopThread.pingThread(MessageLoopThread.java:426)
at com.jniwrapper.win32.MessageLoopThread.pingMessageLoopThread(MessageLoopThread.java:234)
at com.jniwrapper.win32.MessageLoopThread.doInvokeAndWait(MessageLoopThread.java:222)
at com.inductiveautomation.opccom.wrapper.OleJob.runInOLELoop(OleJob.java:29)
at com.inductiveautomation.opccom.wrapper.subscriptions.COMSubscription.runRefreshState(COMSubscription.java:229)
at com.inductiveautomation.opccom.wrapper.subscriptions.COMSubscription.setActive(COMSubscription.java:218)
at com.inductiveautomation.opccom.wrapper.subscriptions.COMSubscription.disconnectServer(COMSubscription.java:383)
at com.inductiveautomation.opccom.COMServerImpl.disconnectServer(COMServerImpl.java:587)
at com.inductiveautomation.opccom.COMServerImpl.shutdown(COMServerImpl.java:300)
at com.inductiveautomation.ignition.gateway.opc.OPCManagerImpl$ServerWrapper.shutdown(OPCManagerImpl.java:715)
at com.inductiveautomation.ignition.gateway.opc.OPCManagerImpl$OPCRecordListener.recordUpdated(OPCManagerImpl.java:569)
at com.inductiveautomation.ignition.gateway.opc.OPCManagerImpl$OPCRecordListener.recordUpdated(OPCManagerImpl.java:524)
at com.inductiveautomation.ignition.gateway.localdb.PersistenceInterfaceImpl.notifyRecordUpdated(PersistenceInterfaceImpl.java:184)
at com.inductiveautomation.ignition.gateway.redundancy.RedundantPersistenceInterfaceImpl._notifyRecordUpdated(RedundantPersistenceInterfaceImpl.java:96)
at com.inductiveautomation.ignition.gateway.redundancy.RedundantPersistenceInterfaceImpl$RecordUpdateListener.recordUpdated(RedundantPersistenceInterfaceImpl.java:300)
at com.inductiveautomation.ignition.gateway.redundancy.RedundantPersistenceInterfaceImpl$RecordUpdateMessage.notify(RedundantPersistenceInterfaceImpl.java:349)
at com.inductiveautomation.ignition.gateway.redundancy.RedundantPersistenceInterfaceImpl$RecordUpdateListener.receiveCall(RedundantPersistenceInterfaceImpl.java:283)
at com.inductiveautomation.ignition.gateway.cluster.QueueableMessageReceiver.receiveCall(QueueableMessageReceiver.java:45)
at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl.dispatchMessage(RedundancyManagerImpl.java:619)
at com.inductiveautomation.ignition.gateway.redundancy.RedundancyManagerImpl$ExecuteTask.run(RedundancyManagerImpl.java:640)
at com.inductiveautomation.ignition.common.execution.impl.BasicExecutionEngine$ThrowableCatchingRunnable.run(BasicExecutionEngine.java:526)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

I haven’t seen that before. It appears that the following happened:

  1. You edited the server, which would start a new one and shut down the old one.
  2. Something happened during shutdown for the old server.
  3. The Ignition thread is waiting for the “ole loop” (the thread used for COM operations) to finish
  4. The ole loop is erroring out while trying to detect its state.

So, everything is likely working correctly because a new Ole loop was created when starting up the new instance. Unfortunately, I think you’ll continue to get these errors until you restart the server.

This error is coming from the library we use for COM. I’m going to test the new version of the library this week, also in hopes of fixing the problems with 64-bit. However, it might be hard to tell if this is fixed, as this is the first time I’ve seen this error.

Regards,

Hi Colby

I thing that there was power loss on server few days ago and after that one of my OPC servers did not startup automatically.
I started OPC server manually and it starts communicating with Ignition, but it can be that session which Ignition was started was staying offline.

If you need logs or anything else I can send those for you before restarting server.

BR
Tommi Vahtera

Hi,

I’m not sure additional logs would be helpful. I can try to see where that error was being caught and see if we can handle things differently, but unless we can figure out a sequence of events to cause it again, I’m not sure there’s much we can do.

If it does happen again soon, I can try sending you a version of the COM module with the latest com library in it.

Regards,