You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@harmony.apache.org by "Tim Ellison (JIRA)" <ji...@apache.org> on 2006/02/03 09:52:05 UTC
[jira] Closed: (HARMONY-66)
java.lang.SecurityManager.checkAccess(Thread t) throws NullPointerException
for the dead thread.
[ http://issues.apache.org/jira/browse/HARMONY-66?page=all ]
Tim Ellison closed HARMONY-66:
------------------------------
Verified by Elena.
> 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