Possible race condition in AsyncTrigger
---------------------------------------

                 Key: SCXML-60
                 URL: https://issues.apache.org/jira/browse/SCXML-60
             Project: Commons SCXML
          Issue Type: Bug
    Affects Versions: 0.6
            Reporter: Andy Bailey
            Priority: Minor


In AsyncTrigger (used by SimpleSCXMLInvoker) a thread is started from inside 
the constuctor, because of the java memory model the fields arent guaranteed to 
be written until after the constructor ends, however the thread could start 
before this and so the values could be null.

To be safe the class should have a start method that gets invoked after the 
constructor.

  AsyncTrigger(final SCXMLExecutor executor, final TriggerEvent event) {
        this.executor = executor;
        this.events = new TriggerEvent[1];
        this.events[0] = event;
        new Thread(this).start();
    }
 public void run() {
        try {
            synchronized (executor) {
                executor.triggerEvents(events);
            }
        } catch (ModelException me) {
            log.error(me.getMessage(), me);
        }
    }

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to