[ http://issues.apache.org/jira/browse/HARMONY-66?page=all ] Tim Ellison resolved HARMONY-66: --------------------------------
Resolution: Fixed Elena, Thanks to you checks I have revised the fix. Now fixed in LUNI java.lang.SecurityManager at repo revision 374380. Please will you review and check again. > java.lang.SecurityManager.checkAccess(Thread t) throws NullPointerException > for the dead thread. > ------------------------------------------------------------------------------------------------ > > Key: HARMONY-66 > URL: http://issues.apache.org/jira/browse/HARMONY-66 > Project: Harmony > Type: Bug > Components: Classlib > Reporter: Elena Semukhina > Assignee: Tim Ellison > Priority: Minor > > java.lang.SecurityManager.checkAccess(Thread t) throws NullPointerException > for the dead thread. > According to specification, the Thread.getThreadGroup() method returns null > if this thread has died. > SecurityManager.checkAccess(Thread t) should take that into account. > Code for reproducing: > public class ThreadCheckAccess { > class ThreadRunning extends Thread { > volatile boolean stopWork = false; > int i = 0; > public void run () { > while (!stopWork) { > } > } > } > public void test() { > SecurityManager sm = new SecurityManager(); > System.setSecurityManager(sm); > ThreadRunning t = new ThreadRunning(); > t.start(); > t.stopWork = true; > try { > t.join(); > } catch (InterruptedException e) { > e.printStackTrace(); > } > try { > sm.checkAccess(t); > System.out.println("PASSED"); > } catch (NullPointerException e) { > e.printStackTrace(); > System.out.println("FAILED"); > } > } > public static void main(String args[]) { > new ThreadCheckAccess().test(); > } > } > Steps to Reproduce: > 1. Build Harmony (check-out on 2006-01-31) j2se subset as described in > README.txt. > 2. Compile ThreadCheckAccess.java using BEA 1.4 javac > > javac -d . ThreadCheckAccess.java > 2. Run java using compatible VM (J9) > > java -showversion ThreadCheckAccess > > Output: > java version 1.4.2 (subset) > (c) Copyright 1991, 2005 The Apache Software Foundation or its licensors, as > applicable. > java.lang.NullPointerException > at java.lang.SecurityManager.checkAccess(SecurityManager.java:92) > at java.lang.Thread.checkAccess(Thread.java:423) > at ThreadCheckAccess.test(ThreadCheckAccess.java:23) > at ThreadCheckAccess.main(ThreadCheckAccess.java:32) > FAILED > Output on BEA 1.4.2: > PASSED > Suggested junit test case: > package org.apache.harmony.tests.java.lang; > import junit.framework.TestCase; > public class SecurityManagerTest extends TestCase { > class ThreadRunning extends Thread { > volatile boolean stopWork = false; > int i = 0; > public void run () { > while (!stopWork) { > } > } > } > public void test_checkAccessLjava_lang_Thread() { > SecurityManager sm = new SecurityManager(); > System.setSecurityManager(sm); > ThreadRunning t = new ThreadRunning(); > t.start(); > t.stopWork = true; > try { > t.join(); > } catch (InterruptedException e) { > fail("Assert 0: unexpected " + e); > } > try { > sm.checkAccess(t); > } catch (NullPointerException e) { > fail("Assert 1: NullPointerException has been thrown"); > } > } > } -- This message is automatically generated by JIRA. - If you think it was sent incorrectly contact one of the administrators: http://issues.apache.org/jira/secure/Administrators.jspa - For more information on JIRA, see: http://www.atlassian.com/software/jira