[IGSTK-Users] State Machine Validation Failure
Kevin Gary
kgary at asu.edu
Thu Jan 14 20:34:04 EST 2010
Charles,
Attached are 2 .java files. IgstkvtMergeList.java goes in directory
$IGSTKVT_HOME/src/org/igstk/validation/simulator/rules and
IgstkvtGeneratorTest.java goes in
$IGSTKVT_HOME/src/org/igstk/validation/simulator/util
These will be checked into CVS as soon as I resolve a permissions problem with
the cvs administrators.
After copying these in the proper place, do an "ant run-smviz" and it will
compile these files in and run the application.
The defect has been logged in the Mantis defect tracker as 0010144. Essentially
the problem was a faulty list merging implementation in IgstkvtMergeList, I
changed it to one that simply concatenates sendEvent lists together. When you
run with your files and select animate, you should see SM1 on the bottom animate
through 77 events first, and then SM2 at the top animate through its 17 events.
Please let me know how it works for you.
Kevin
charles.garraud at irisa.fr wrote:
> Hi,
>
> I encounter some memory failure problems when trying to use the
> run-simulator app.
>
> The app runs on a 2GB memory laptop.
> The OS is Ubuntu 9.04.
> The problem occurs when running some of the igstk examples (it seems to
> be linked to the number of events defined in the events files). For
> example,
> *igstkDummyTracker.xml with sendEvent files
> igstkDummyTracker_edgecoverage_test_basispath1.xml and
> igstkDummyTracker_nodecoverage_test1.xml
> *igstkLandmark3DRegistration.xml with sendEvent files
> igstkLandmark3DRegistration_edgecoverage_test_basispath1.xml and
> igstkLandmark3DRegistration_nodecoverage_test1.xml
>
> The problem is related to heap memory management (as described here:
> http://java.sun.com/javase/technologies/hotspot/gc/gc_tuning_6.html).
> The recursive insertion of element
> in igstkvtMergeList.java seems to cause the failure.
>
> Here is the error returned:
>
> java.lang.OutOfMemoryError: GC overhead limit exceeded
> [java] at
> org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
> [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:764)
> [java] at
> org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:218)
> [java] at
> org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132)
> [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:105)
> [java] at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> [java] at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown
> Source)
> [java] at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> [java] at java.lang.reflect.Method.invoke(Method.java:616)
> [java] at
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
> [java] at org.apache.tools.ant.Task.perform(Task.java:348)
> [java] at org.apache.tools.ant.Target.execute(Target.java:357)
> [java] at org.apache.tools.ant.Target.performTasks(Target.java:385)
> [java] at
> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
> [java] at
> org.apache.tools.ant.Project.executeTarget(Project.java:1306)
> [java] at
> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>
> [java] at
> org.apache.tools.ant.Project.executeTargets(Project.java:1189)
> [java] at org.apache.tools.ant.Main.runBuild(Main.java:758)
> [java] at org.apache.tools.ant.Main.startAnt(Main.java:217)
> [java] at
> org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
> [java] at
> org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
> [java] Caused by: java.lang.OutOfMemoryError: GC overhead limit
> exceeded
> [java] at java.util.Arrays.copyOf(Arrays.java:2746)
> [java] at java.util.ArrayList.ensureCapacity(ArrayList.java:187)
> [java] at java.util.ArrayList.addAll(ArrayList.java:499)
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:112)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] --- Nested Exception ---
> [java] java.lang.OutOfMemoryError: GC overhead limit exceeded
> [java] at java.util.Arrays.copyOf(Arrays.java:2746)
> [java] at java.util.ArrayList.ensureCapacity(ArrayList.java:187)
> [java] at java.util.ArrayList.addAll(ArrayList.java:499)
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:112)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] Java Result: -1
>
>
> I tried to increase the JVM memory capacity (export ANT_OPTS="-Xms1024m
> -Xmx1024m"). It didn't work.
>
> I tried to switch off gc overhead limit (-XX:-UseGCOverheadLimit), but
> (as I expected) it didn't work but just change the error to a heap space
> error:
>
> [java] java.lang.OutOfMemoryError: Java heap space
> [java] at
> org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:194)
> [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:764)
> [java] at
> org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:218)
> [java] at
> org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132)
> [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:105)
> [java] at
> org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
> [java] at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown
> Source)
> [java] at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>
> [java] at java.lang.reflect.Method.invoke(Method.java:616)
> [java] at
> org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
> [java] at org.apache.tools.ant.Task.perform(Task.java:348)
> [java] at org.apache.tools.ant.Target.execute(Target.java:357)
> [java] at org.apache.tools.ant.Target.performTasks(Target.java:385)
> [java] at
> org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
> [java] at
> org.apache.tools.ant.Project.executeTarget(Project.java:1306)
> [java] at
> org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
>
> [java] at
> org.apache.tools.ant.Project.executeTargets(Project.java:1189)
> [java] at org.apache.tools.ant.Main.runBuild(Main.java:758)
> [java] at org.apache.tools.ant.Main.startAnt(Main.java:217)
> [java] at
> org.apache.tools.ant.launch.Launcher.run(Launcher.java:257)
> [java] at
> org.apache.tools.ant.launch.Launcher.main(Launcher.java:104)
> [java] Caused by: java.lang.OutOfMemoryError: Java heap space
> [java] at java.util.Arrays.copyOf(Arrays.java:2746)
> [java] at java.util.ArrayList.ensureCapacity(ArrayList.java:187)
> [java] at java.util.ArrayList.add(ArrayList.java:378)
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:122)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] --- Nested Exception ---
> [java] java.lang.OutOfMemoryError: Java heap space
> [java] at java.util.Arrays.copyOf(Arrays.java:2746)
> [java] at java.util.ArrayList.ensureCapacity(ArrayList.java:187)
> [java] at java.util.ArrayList.add(ArrayList.java:378)
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:122)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] at
> org.igstk.validation.simulator.rules.IgstkvtMergeList.insert(IgstkvtMergeList.java:131)
>
> [java] Java Result: -1
>
>
> If anyone can help, cause I'm stuck here...
>
> Thanks a lot,
>
> Best regards,
>
> Charles
>
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/cgi-bin/mailman/listinfo/igstk-users
>
--
Kevin A. Gary, Ph.D.
Assistant Professor
Department of Engineering
College of Technology and Innovation
Arizona State University at the Polytechnic Campus
(480)727-1373
http://dcs.asu.edu/faculty/KevinGary
kgary at asu.edu
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: IgstkvtMergeList.java
URL: <http://public.kitware.com/pipermail/igstk-users/attachments/20100114/41fc1cfa/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: IgstkvtGeneratorTest.java
URL: <http://public.kitware.com/pipermail/igstk-users/attachments/20100114/41fc1cfa/attachment-0001.ksh>
More information about the IGSTK-Users
mailing list