Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in
  • E escet
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Graph
    • Compare
    • Locked Files
  • Issues 92
    • Issues 92
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 5
    • Merge requests 5
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Releases
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Eclipse ProjectsEclipse Projects
  • Eclipse ESCET (Supervisory Control Engineering Toolkit)
  • escet
  • Issues
  • #49
Closed
Open
Issue created Apr 10, 2021 by Dennis Hendriks@ddennisMaintainer

CIF simulator crashes on too many invariants

Simulating the following model results in a crash:

automaton def A():
    disc bool d = true;
    invariant d or d or d or d or d or d or d or d or d or d or d or d or d or d or d or d or d or d or d;
    location:
        initial;
end

group def G1():
    a1: A();
    a2: A();
end

group def G2():
    g1: G1();
    g2: G1();
end

group def G3():
    g1: G2();
    g2: G2();
end

group def G4():
    g1: G3();
    g2: G3();
end

group def G5():
    g1: G4();
    g2: G4();
end

group def G6():
    g1: G5();
    g2: G5();
end

group def G7():
    g1: G6();
    g2: G6();
end

group def G8():
    g1: G7();
    g2: G7();
end

group def G9():
    g1: G8();
    g2: G8();
end

group def G10():
    g1: G9();
    g2: G9();
end

g: G10();

The crash report states:

[Exception]
java.lang.RuntimeException: Compilation error.
	at org.eclipse.escet.cif.simulator.compiler.CifCompilerContext.compile(CifCompilerContext.java:1531)
	at org.eclipse.escet.cif.simulator.compiler.CifCompiler.compileSpec(CifCompiler.java:115)
	at org.eclipse.escet.cif.simulator.compiler.CifCompiler.compileSpec(CifCompiler.java:63)
	at org.eclipse.escet.cif.simulator.CifSimulator.loadSpec(CifSimulator.java:475)
	at org.eclipse.escet.cif.simulator.CifSimulator.simulateInternal(CifSimulator.java:216)
	at org.eclipse.escet.cif.simulator.CifSimulator.simulate(CifSimulator.java:115)
	at org.eclipse.escet.cif.simulator.CifSimulatorApp.runInternal(CifSimulatorApp.java:129)
	at org.eclipse.escet.common.app.framework.Application.run(Application.java:343)
	at org.eclipse.escet.common.app.framework.Application.run(Application.java:183)
	at org.eclipse.escet.common.eclipse.ui.BaseFileCommandHandler.run(BaseFileCommandHandler.java:261)
	at org.eclipse.escet.common.eclipse.ui.BaseFileCommandHandler$1.run(BaseFileCommandHandler.java:102)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.eclipse.escet.common.app.framework.javacompiler.RuntimeJavaCompilerException: Run-time Java code compilation failed (with 2062 source files):
with output (0):
with diagnostics (100):
    line 2739, column 11: ERROR: code too large for try statement
    line 2748, column 11: ERROR: code too large for try statement
    line 2757, column 11: ERROR: code too large for try statement
[...]
    line 3612, column 11: ERROR: code too large for try statement
    line 3621, column 11: ERROR: code too large for try statement
    line 3630, column 11: ERROR: code too large for try statement

	at org.eclipse.escet.common.app.framework.javacompiler.RuntimeJavaCompiler.compile(RuntimeJavaCompiler.java:187)
	at org.eclipse.escet.cif.simulator.compiler.CifCompilerContext.compile(CifCompilerContext.java:1529)
	... 11 more

The problem with too many invariants is that the code ends up in a single method, and that violates Java class file constraints. We encountered similar issues before. We need to split it up into multiple methods or so.

Assignee
Assign to
Time tracking

Copyright © Eclipse Foundation, Inc. All Rights Reserved.     Privacy Policy | Terms of Use | Copyright Agent