[jbossts-issues] [JBoss JIRA] (JBTM-2423) ORBRunner uses the orb after run() returns

Michael Musgrove (JIRA) issues at jboss.org
Fri May 29 09:41:03 EDT 2015

     [ https://issues.jboss.org/browse/JBTM-2423?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Michael Musgrove updated JBTM-2423:
        Status: Resolved  (was: Pull Request Sent)
    Resolution: Done

The fix will be available in the next narayana 5.1.x release. If it needs back porting then we will need to create a 5.0.6 release.

> ORBRunner uses the orb after run() returns
> ------------------------------------------
>                 Key: JBTM-2423
>                 URL: https://issues.jboss.org/browse/JBTM-2423
>             Project: JBoss Transaction Manager
>          Issue Type: Bug
>            Reporter: Michael Musgrove
>            Assignee: Michael Musgrove
>             Fix For: 5.next
> ORBRunner.java starts an orb using orb().run() but then performs operations on the orb after the run() method returns. According to the CORBA spec this is invalid:
> {quote}
> Once an ORB has shutdown, only object reference management operations(duplicate,
> release and is_nil) may be invoked on the ORB or any object reference obtained
> from it.
> {quote}
> Note that when the orb.run() method returns the orb has shutdown because, for the run method, the spec states:
> {quote}
> This operation will block until the ORB has completed the shutdown process,
> {quote}
> This issue has arisen because of a change made to our fork of the jdk orb: in the jdk orb shutdown method we join with all the orb runners. This results in deadlock:
> # com.arjuna.orbportability.ORB.shutdown is a synchronized method and it calls shutdown on the jdk orb;
> # shutdown on the jdk orb notifies the ORBRunner thread which now tries to call back into a synchronized method of com.arjuna.orbportability.ORB but is blocked because the monitor is held
> # at this point the jdk orb shutdown would normally then return allowing the 
> the ORBRunner thread to make progress but a recent change now means that the jdk orb shutdown method performs a join() on the various ORBRunner threads

This message was sent by Atlassian JIRA

More information about the jbossts-issues mailing list