avi encountered an NPE with the following stack trace signature:
java.lang.NullPointerException
at org.echarts.LocalPort.isPossiblyReferencedBy(LocalPort.java:154)
at org.echarts.TransitionMachine.getMaxEnabledMessageTransition(TransitionMachine.java:582) // 5 ORIG_SETUP - this is the top-level TransitionMachine for the TERM_SETUP state
at org.echarts.TransitionMachine.getMaxEnabledMessageTransition(TransitionMachine.java:585) // 4 ACTIVE:
at org.echarts.TransitionMachine.getMaxEnabledMessageTransition(TransitionMachine.java:585) // 3 CONTINUE_CALL: com.att.tlv.asnetiservices.signaling.sipengine.core.machines.LegManagerFSM
at org.echarts.TransitionMachine.getMaxEnabledMessageTransition(TransitionMachine.java:585) // 2 RUN_APPLICATION: com.att.tlv.asnetiservices.signaling.sipengine.core.machines.InitialFSM
at org.echarts.TransitionMachine.getMaxEnabledMessageTransition(TransitionMachine.java:585) // 1 org.echarts.servlet.sip.FeatureBoxTerminationHandlerFSM
at org.echarts.TransitionMachine.run(TransitionMachine.java:1121)
at org.echarts.servlet.sip.BoxMachineRunner.advanceBoxMachine(BoxMachineRunner.java:77)
at org.echarts.servlet.sip.SipPort.input(SipPort.java:1238)
at org.echarts.servlet.sip.EChartsSipServlet.dispatchToFreeBox(EChartsSipServlet.java:548)
at org.echarts.servlet.sip.EChartsSipServlet.doRequest(EChartsSipServlet.java:475)
the exception can be reproduced with the following test program:
package test;
import org.echarts.InternalPort;
public machine Test0240 {
<* boolean fired1 = false *>;
<* boolean fired2 = false *>;
<* final InternalPort myPort = new InternalPort(this, "myPort") *>;
initial state S1;
state S2: concurrent {
state S2_2: {
initial state S2_2_1;
state S2_2_2;
transition S2_2_1 - myPort ? String -> S2_2_2;
}
state S2_1: {
initial state S2_1_1: {
initial state S2_1_1_1;
state S2_1_1_2;
transition S2_1_1_1 - myPort ? String -> S2_1_1_2;
transition S2_1_1_1 - [ ! fired1 ] / fired1 = true -> S2_1_1_2;
}
}
}
transition S1 --> S2;
transition S2.S2_1.S2_1_1.TERMINAL - [ ! fired2 ] / {
fired2 = true;
myPort ! "test message";
} -> S2.DEEP_HISTORY;
}