NameService resolving in Applet causes AccessControlException and deadlock

XMLWordPrintable

    • generic, x86
    • generic, linux, windows_2000

      FULL PRODUCT VERSION :
      java version "1.5.0"
      Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0-b64)
      Java HotSpot(TM) Client VM (build 1.5.0-b64, mixed mode, sharing)


      ADDITIONAL OS VERSION INFORMATION :
      Linux mjirko 2.4.18-14 #1 Wed Sep 4 13:35:50 EDT 2002 i686 athlon i386 GNU/Linux
      Microsoft Windows 2000 [Verze 5.00.2195]

      A DESCRIPTION OF THE PROBLEM :
      NameService resolving (calling ORB.resolve_initial_references("NameService")) in Apllet causes AccessControlException and deadlock (applet hangs).

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      - run name service (on port 2809): tnameserv -ORBInitialPort 2809
      - run test applet using appleviewer: appletviewer CorbaTest.html

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      NameSrvice should be resolved and message "Nameservice resolved." printed into System.out.
      ACTUAL -
      The applet hangs in ORB.resolve_initial_references().

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      Exception in thread "Thread-2" java.security.AccessControlException: access denied (java.lang.RuntimePermission modifyThread)
              at java.security.AccessControlContext.checkPermission(AccessControlContext.java:264)
              at java.security.AccessController.checkPermission(AccessController.java:427)
              at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
              at sun.applet.AppletSecurity.checkAccess(AppletSecurity.java:138)
              at java.lang.Thread.checkAccess(Thread.java:1218)
              at java.lang.Thread.setName(Thread.java:1001)
              at com.sun.corba.se.impl.transport.SelectorImpl.run(SelectorImpl.java:239)

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      <!-- FILE: CorbaTest.html -->
      <HTML>
        <HEAD>
          <TITLE>CORBA Test</TITLE>
        </HEAD>
        <BODY>
          <h1>CORBA Test</h1>
          <hr>
          <applet code="CorbaTest.class" width="400" height="250">
            <param name="org.omg.CORBA.ORBInitialPort" value="2809"/>
            alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason."
            Your browser is completely ignoring the &lt;APPLET&gt; tag!
          </applet>
        </BODY>
      </HTML>


      /**
       * FILE: CorbaTest.java
       */
      import java.applet.Applet;
      import org.omg.CORBA.*;
      import org.omg.CosNaming.*;

      public class CorbaTest extends Applet {

        private ORB orb;

        public void init() {
          // create ORB
          try {
            orb = ORB.init(this, null);
            //((com.sun.corba.se.spi.orb.ORB) orb).transportDebugFlag = true;
          } catch(RuntimeException e) { }
        }

       public void start() {
          if(orb==null) return;
          // resolve NamingContext
          try {
            org.omg.CORBA.Object objRef = orb.resolve_initial_references("NameService");
            NamingContext nc = NamingContextHelper.narrow(objRef);
            System.out.println("NameService resolved.");
          } catch(Exception e) { }
        }

        public void destroy() {
          if(orb!=null) {
            orb.shutdown(false);
            orb = null;
          }
        }

      }
      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      Grant "modifyThread" and "modifyThreadGroup" permissions to Applet.
      Suggested fix supplied by community member ###@###.###:

      A DESCRIPTION OF THE FIX :
        Bug number : 6203567
        Bug Description : NameService resolving in Applet causes AccessControlException and deadlock
      Diff Baseline : Tiger b05
      Diff :
      --- com/sun/corba/se/impl/transport/SelectorImpl.java 2005-08-26 22:54:33.000000000 +0200
      +++ com/sun/corba/se/impl/transport/SelectorImpl2.java 2005-11-10 10:23:42.000000000 +0100
      @@ -236,7 +236,12 @@

           public void run()
           {
      - setName("SelectorThread");
      + AccessController.doPrivileged(new PrivilegedAction() {
      + public Object run() {
      + setName("SelectorThread");
      + return null;
      + }
      + });
              while (!closed) {
                  try {
                      int n = 0;

      FIX FOR BUG NUMBER:
      6203567
      Test case supplied by community member ###@###.###:

      Hello,

      here is a little test case for the fix. Steps to use this test case:

      1) compile CorbaInAppletTest.java
      2) run name service (on port 2809): tnameserv -ORBInitialPort 2809
      3) run the test applet using appleviewer: appletviewer
      CorbaInAppletTest.html

      If the bug is present, the exception message is printed out and the
      apllet hangs in ORB.resolve_initial_references().
      If the bug is corrected, NameSrvice should be resolved and message
      "Nameservice resolved." printed into System.out.


      Refer to the attached files for CorbaInAppletTest.java and CorbaInAppletTest.html

            Assignee:
            Unassigned
            Reporter:
            Girish Manwani (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: