To prevent spam users, you can only post on this forum after registration, which is by invitation. If you want to post on the forum, please send me a mail (h DOT m DOT w DOT verbeek AT tue DOT nl) and I'll send you an invitation in return for an account.

Online Conformance / StreamConformance and InvocationTargetException

Hello!

I've tried to run the Online Conformance (StreamConformance) package, but every time it ends up with InvocationTargetException.

I've tried to run it on ProM 6.8 and nightly build;
I've tried Java 17 and Java 8;
I've tried different pnml models.

After choosing the Petri Net and Marking, and choosing "Online Conformance - Local behavior", the screen "Tasks" appears and shows "java.lang.reflect.InvocationTargetException".

If I choose "Online Conformance - Region-based approach", the trace is a bit longer, but still ends with InvocationTargetException, e.g.:

Connection found: Connection labelled Connection to coverability Graph of Tree, connecting org.processmining.models.connections.petrinets.behavioral.CoverabilityGraphConnection@dc3a85ca
Connection found: Connection labelled Connection to coverability Graph of Tree, connecting org.processmining.models.connections.petrinets.behavioral.CoverabilityGraphConnection@608bbda9
Connection found: Connection labelled Connection Tree marked with [(source 2344,1)], connecting org.processmining.models.connections.petrinets.behavioral.InitialMarkingConnection@f1860fe
Connection found: Connection labelled Connection to Coverability Set of Tree, connecting org.processmining.models.connections.petrinets.behavioral.CoverabilitySetConnection@2a9ea017
Connection found: Connection labelled Connection to Coverability Set of Tree, connecting org.processmining.models.connections.petrinets.behavioral.CoverabilitySetConnection@6875f458
Connection found: Connection labelled Connection to Dead markings of Tree, connecting org.processmining.models.connections.petrinets.behavioral.DeadMarkingConnection@de74e5bb
Connection found: Connection labelled Connection to Dead markings of Tree, connecting org.processmining.models.connections.petrinets.behavioral.DeadMarkingConnection@9f3d53e2
Connection found: Connection labelled Coverability Graph of Tree and related mined information, connecting org.processmining.models.connections.transitionsystem.TransitionSystemConnection@3805aa04
java.lang.reflect.InvocationTargetException

I'm running ProM directly from the .bat file. I've tried doing a clean reinstall with only RunnerUpPackages and StreamConformance installed. 

Based on this thread: https://www.win.tue.nl/promforum/discussion/1313/download-plugin-from-prom-sources
I understand that the package may not be compatible with newer versions of ProM, but I'm unsure if that's still the case and whether the error I get is related to that, or something else.

Comments

  • hverbeekhverbeek Posts: 838
    Hi Kristo,

    My best guess is that this is a memory issue: You were running low on memory, and the garbage collector of Java removed objects that were still accessible through the connections in ProM. Underlying issue here is that these connections do not necessarily prevent these objects from being removed by the garbage collector.

    You can try to increase the amount of memory available to ProM. Please check the .bat, .sh, and/or .ini files in the folder where you have installed ProM for the text "-Xmx". Typically, ProM may use 4 GB (-Xmx4G), but you can increase this amount by changing this. Of course, your computer should have the amount of memory available. If the computer only has 8 GB of memory, then changing this to -Xmx12G makes no sense.

    Of course, if you need ProM to run a lot longer than it has been able to run now, then the additional memory may also fill up, and the problem may not be solved by this. In that case, I do not see an easy solution.

    Kind regards,
    Eric.

  • Hi Eric,

    I tried restarting my computer and shut down everything which might consume memory.
    I tried increasing ProM 6.8 memory from 4G to 8G (I have 16GB, 10+GB available physical memory).

    I still get the same error immediately when trying to run the package.

    Is there anything else I could try?


    This is my ProM.bat:

    @GOTO start

    :add
     @set X=%X%;%1
     @GOTO :eof

    :start
    @set X=.\ProM68_dist\ProM-Framework-6.8.60.jar
    @set X=%X%;.\ProM68_dist\ProM-Contexts-6.8.34.jar
    @set X=%X%;.\ProM68_dist\ProM-Models-6.7.20.jar
    @set X=%X%;.\ProM68_dist\ProM-Plugins-6.7.45.jar

    @for /R .\ProM68_lib %%I IN ("*.jar") DO @call :add .\ProM68_lib\%%~nI.jar

    @jre8\bin\java -da -Xmx8G -classpath "%X%" -Djava.library.path=.//ProM68_lib -Djava.util.Arrays.useLegacyMergeSort=true org.processmining.contexts.uitopia.UI

    set X=

  • hverbeekhverbeek Posts: 838
    Hi Kristo,

    You didn't have to close other applications. If the VM starts with 8 GB of memory, then ProM can use that. But if the exception occurs almost immediately, then this may not be a memory-related problem. But you could check by opening the Task Manager (CTRL-SHIFT-ESC) and monitor the memory usage of the Java process that is running ProM.

    The problem is that this invocation target exception is a very very generic exception. Basically, it just says that the plugin has failed. And it (unfortunately) masks the underlying exception.

    If not set so already, you could try to set VERBOSE to ALL in the ProM.ini file. But chances are that this is already set to so.

    The only alternative I see is to debug the plugin in Eclipse by running ProM from the StreamConformance package in debug mode. But this is not a trivial thing to do.

    If you can send me (h.m.w.verbeek@tue.nl) your input files, and tell me which buttons you pressed in ProM, I could have a go at this.

    Cheers,
    Eric.
  • Hi Eric,

    Thank you. The verbosity already was on ALL.

    But, I managed to run ProM via Eclipse in debug mode, and this is the stack trace when I try to run the plugin:

    Start plug-in Online Conformance - Local behavior
    -------- The following exception was logged by the framework: 
             The exception was probalby handled properly. 
    java.util.concurrent.ExecutionException: java.lang.reflect.InvocationTargetException
    at java.util.concurrent.FutureTask.report(Unknown Source)
    at java.util.concurrent.FutureTask.get(Unknown Source)
    at javax.swing.SwingWorker.get(Unknown Source)
    at org.processmining.framework.plugin.ProMFuture.get(ProMFuture.java:119)
    at org.processmining.framework.plugin.impl.AbstractPluginDescriptor$1.done(AbstractPluginDescriptor.java:193)
    at org.processmining.framework.plugin.ProMFuture$1.done(ProMFuture.java:66)
    at javax.swing.SwingWorker$5.run(Unknown Source)
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
    at sun.swing.AccumulativeRunnable.run(Unknown Source)
    at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
    at javax.swing.Timer.fireActionPerformed(Unknown Source)
    at javax.swing.Timer$DoPostEvent.run(Unknown Source)
    at java.awt.event.InvocationEvent.dispatch(Unknown Source)
    at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
    at java.awt.EventQueue.access$500(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.awt.EventQueue$3.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
    at java.awt.EventQueue.dispatchEvent(Unknown Source)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
    at java.awt.EventDispatchThread.run(Unknown Source)
    Caused by: java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.processmining.framework.plugin.impl.PluginDescriptorImpl.execute(PluginDescriptorImpl.java:331)
    at org.processmining.framework.plugin.impl.AbstractPluginDescriptor$1.doInBackground(AbstractPluginDescriptor.java:155)
    at org.processmining.framework.plugin.ProMFuture$1.doInBackground(ProMFuture.java:56)
    at javax.swing.SwingWorker$1.call(Unknown Source)
    at java.util.concurrent.FutureTask.run(Unknown Source)
    at javax.swing.SwingWorker.run(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)
    Caused by: java.lang.ExceptionInInitializerError
    at org.processmining.streamconformance.regions.utils.GUICustomUtils.prepareLabel(GUICustomUtils.java:253)
    at org.processmining.streamconformance.regions.gui.panels.NetworkConfiguration.initComponents(NetworkConfiguration.java:67)
    at org.processmining.streamconformance.regions.gui.panels.NetworkConfiguration.<init>(NetworkConfiguration.java:29)
    at org.processmining.streamconformance.local.plugin.LocalOnlineConformancePlugin.plugin(LocalOnlineConformancePlugin.java:39)
    ... 13 more
    Caused by: java.lang.NullPointerException
    at javax.swing.ImageIcon.<init>(Unknown Source)
    at org.processmining.streamconformance.regions.utils.UIColors.<clinit>(UIColors.java:19)
    ... 17 more


    I'm trying to pinpoint the issue, but perhaps you have an idea what to check next?

    Best,
    Kristo
  • hverbeekhverbeek Posts: 838
    Hi Kristo,

    In the end, the plugin breaks because it cannot find a resource named "loader.gif". The file for this resource is located in the installed StreamConformance package, in the lib/resources folder. Please check the folder where ProM has installed its packages, and look for the streamconformance-6.10.29 folder (latest version). The lib/resources folder is in this folder.

    Question now is what we can do to enable ProM to find this file. I do not have a definitive answer on this, but I can suggest two possibilities:
    1. Copy the loader.gif file into the lib folder (next to the resources folder).
    2. Copy the loader.gif file into the lib/images folder (which you then need to create first).

    Hopefully, one of these possibilities works. Please let me know.

    Cheers,
    Eric.
  • Hi Eric,

    Thanks! Copying loader.gif from /lib/resources to /lib worked.

    Running on ProM 6.8 I keep getting a null pointer exception after confirming the port and address, but running from Eclipse everything seems to be working.

    A big thank you for your help!

    PS if there is anything that seems I've been doing wrong in setting up ProM (e.g. how did the loader.gif end up in the wrong folder), then please feel free to let me know.

    Best,
    Kristo
Sign In or Register to comment.