Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4916766

CORBA COMM_FAILURE when destroy() takes too long and close() happens



    • Bug
    • Resolution: Fixed
    • P2
    • 1.4.1
    • 1.4.1
    • other-libs
    • 07
    • generic
    • solaris_8



        Test case and related files are in

        BEA logged the case and this is reproducible under their application server.
        I have it in this directory as well in case it's needed.

        You can install this installer and choose the default install

        After the installation create a directory user_projects under
        create another directory under user_projects by name domains.

        Under this domains directory extract the mydomain.zip file which is available in the above directory

          deploy the application 'fxtransact'

           hit the applet in the browser as follows:
           http://host:port/fxtransact/applet.html or
           http://host:port/fxtransact/iiop-applet.html or

          4) you will a submit button in the browser. Hit the submit button wait for message that says applet started. And then hit the submit button again. You will see corba errors in java plugin console.

        Caused by: org.omg.CORBA.COMM_FAILURE: vmcid: SUN minor code: 208 completed: Maybe
         at com.sun.corba.se.internal.iiop.IIOPConnection.purge_calls(Unknown Source)
         at com.sun.corba.se.internal.iiop.ReaderThread.run(Unknown Source)

        On the applet refresh/reload it is trying to do two things at a time. One is calling destroy and the other is an event on killing the whole applet context and it's corresponding resources.
        So, One thread is executing destroy() and the other thread is executing cleaning up AppContext. As part of cleaning up app context, it is also killing all the threads and thread groups and hence killing com.sun.corba.se.internal.iiop.ReaderThread. But at the same time, the other thread who is doing destroy() is trying to use the ReaderThread and operating
        processInput() on IIOPConnection inside run() method of ReaderThread. Hence it got ThreadDeath. Hence, it is setting SystemException as COMM_FAILURE to the connection and finally it's been thrown from the destroy() method.
         So, finallay based on various combinations we tried, looks like it is failing only in the case when both of these are happening at the same time. It doesn't fail if the destroy() or init() happens completely before or after ThreadDeath is issued.


          Issue Links



                duke J. Duke
                msusko Mark Susko (Inactive)
                0 Vote for this issue
                0 Start watching this issue