[kepler-dev] Getting TerminateProcessException when sending token from input port to output port

Christopher Brooks cxh at eecs.berkeley.edu
Sat Aug 25 09:14:29 PDT 2012


Hi Madhavi,
The pseudo code does not give me much to go on.
If you look at the put() method in PNQueueReceiver, then you will see:

while(!_terminate) {
    ...
    try {
    ...
    } catch (InterruptedException e) {
                 _terminate = true;
    } finally {
        ....
    }
}

if (_terminate) {
             throw new TerminateProcessException("");
}

Also, reset() sets _terminate to false.
requestFinish() sets _terminate to true.

See the documentation for TerminateProcessException at
http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII8.0/ptII/doc/codeDoc/ptolemy/actor/process/TerminateProcessException.html

> This exception is thrown to terminate a process. This is only a 
> notification exception that a ProcessDirector uses to terminate all 
> the processes gracefully. It is not an exception that indicates an 
> error in the code or model.
>
> In the process domains (PN and CSP for example), a simulation is 
> terminated only when a deadlock is detected. During a deadlock, the 
> threads corresponding to actors are normally blocked on a method call 
> to the receiver. This exception is normally thrown from these methods, 
> so that the threads can return from the call and terminate themselves.
>
> This class is a standalone class and not derived from the Ptolemy 
> Runtime exceptions as those exceptions indicate an error in the model, 
> while this exception is used for passing of information to the threads.

The run() method in ptolemy.actor.process.ProcessThread has code like

        } else if (thrownWhenIterate instanceof InterruptedException) {
                     // Process was terminated by call to stop();
                     if (_debugging) {
                         _debug("-- Thread was interrupted: "
                                 + thrownWhenIterate);
                     }
         }

My guess is that PNQueueReceiver.put() may be throwing an 
InterruptedException, or PNQueueReceiver.requestFinish() is being called.

I don't see anything obviously wrong with your pseudo code, I suspect 
the model has unconnected ports or something?

I would need a complete example to look further into this, there are 
just too many possibilities.

_Christopher


On 8/24/12 10:13 PM, Madhavi Tikhe wrote:
>
> Hi Chris,
>
> Thanks for the reply.  Following is the illustration for the logic I have.
>
> Public TestActor extends TypedAtomicActor
>
> {
>
> TypedIOPort input, output;
>
> Public  TestActor (CompositeEntity container , String name ) throws 
> IllegalActionException, NameDuplicationException
>
> {
>
>                 Super ( container, name);
>
>                 input = createInputPort ( "test");
>
>                 output = createOutputPort ("test");
>
> }
>
> Public void fire () throws IllegalActionException
>
> {
>
>                 Super.fire();
>
>                 If ( some-condition-met)
>
> {
>
>                 List <IOPort> ports = this.outputPortList();
>
>                 For (IOPort port : ports )
>
> {
>
>                 Object value = getValueFor ( port.getName ());
>
>                 Token token = createTokenFromObject ( value ) ;
>
> port.send (0, token); // THIS LINE IS THROWING TPE
>
> }
>
> }
>
> }
>
> public void postfire() throws IllegalActionException
>
> {
>
> return doWeWantToStop();
>
> }
>
> }
>
> Regards,
>
> Madhavi
>
> *From:*Christopher Brooks [mailto:cxh at eecs.berkeley.edu]
> *Sent:* Saturday, August 25, 2012 10:32 AM
> *To:* Madhavi Tikhe
> *Cc:* kepler-dev
> *Subject:* Re: [kepler-dev] Getting TerminateProcessException when 
> sending token from input port to output port
>
> Do you have a small model that illustrates the problem?
>
> _Christopher
>
> On 8/24/12 10:00 PM, Madhavi Tikhe wrote:
>
>     Hi,
>
>     I am trying to send the token to output port on some conditions
>     related to my application.
>
>     I am using PN director for my workflow and using port.send
>     (0,token) to send the token to next input port.
>
>     I am experiencing the following exception and is blocked on it.
>
>     ptolemy.actor.process.TerminateProcessException: Process terminated.
>
>             at
>     ptolemy.domains.pn.kernel.PNQueueReceiver.put(PNQueueReceiver.java:450)
>
>             at
>     ptolemy.actor.AbstractReceiver.putToAll(AbstractReceiver.java:347)
>
>             at ptolemy.actor.IOPort.send(IOPort.java:2733)
>
>             at ptolemy.actor.TypedIOPort.send(TypedIOPort.java:484)
>
>     Have you experienced this problem before? Do you have any
>     suggestions for this?
>
>     Thanks in advance for the help.
>
>     Madhavi
>
>     DISCLAIMER ========== This e-mail may contain privileged and
>     confidential information which is the property of Persistent
>     Systems Ltd. It is intended only for the use of the individual or
>     entity to which it is addressed. If you are not the intended
>     recipient, you are not authorized to read, retain, copy, print,
>     distribute or use this message. If you have received this
>     communication in error, please notify the sender and delete all
>     copies of this message. Persistent Systems Ltd. does not accept
>     any liability for virus infected mails.
>
>
>
>
>     _______________________________________________
>
>     Kepler-dev mailing list
>
>     Kepler-dev at kepler-project.org  <mailto:Kepler-dev at kepler-project.org>
>
>     http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-dev
>
>
>
> -- 
> Christopher Brooks, PMP                       University of California
> CHESS Executive Director                      US Mail: 337 Cory Hall
> Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
> ph: 510.643.9841                                (Office: 545Q Cory)
> home: (F-Tu) 707.665.0131 cell: 707.332.0670
>
> DISCLAIMER ========== This e-mail may contain privileged and 
> confidential information which is the property of Persistent Systems 
> Ltd. It is intended only for the use of the individual or entity to 
> which it is addressed. If you are not the intended recipient, you are 
> not authorized to read, retain, copy, print, distribute or use this 
> message. If you have received this communication in error, please 
> notify the sender and delete all copies of this message. Persistent 
> Systems Ltd. does not accept any liability for virus infected mails.
>

-- 
Christopher Brooks, PMP                       University of California
CHESS Executive Director                      US Mail: 337 Cory Hall
Programmer/Analyst CHESS/Ptolemy/Trust        Berkeley, CA 94720-1774
ph: 510.643.9841                                (Office: 545Q Cory)
home: (F-Tu) 707.665.0131 cell: 707.332.0670

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-dev/attachments/20120825/f0cdb8fb/attachment-0001.html>


More information about the Kepler-dev mailing list