You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Elena Semukhina (JIRA)" <ji...@apache.org> on 2007/02/28 13:46:57 UTC
[jira] Commented: (HARMONY-3253) [drlvm][thread manager]
Thread.join() does not ensure the TERMINATED state of a thread
[ https://issues.apache.org/jira/browse/HARMONY-3253?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12476572 ]
Elena Semukhina commented on HARMONY-3253:
------------------------------------------
I tried the patch and see that the test now passes.
I only have a question: why do you keep the following code in Thread.getState():
if (0 != (state & VMThreadManager.JVMTI_THREAD_STATE_TERMINATED)) {
return State.TERMINATED;
Isn't it redundant now?
> [drlvm][thread manager] Thread.join() does not ensure the TERMINATED state of a thread
> --------------------------------------------------------------------------------------
>
> Key: HARMONY-3253
> URL: https://issues.apache.org/jira/browse/HARMONY-3253
> Project: Harmony
> Issue Type: Bug
> Components: DRLVM
> Reporter: Elena Semukhina
> Attachments: accurate-terminated-state.patch
>
>
> The kernel test ThreadTest.testInterruptTerminated() fails intermittently with the message "interrupt status has not changed to true" when interrupting a terminated thread. This could happen when a thread exited join() but its state at that moment was not TERMINATED.
> The following test shows up that the state of a thread after termination is not always TERMINATED.
> public class TestGetStateJoined {
> public static void main(String args[]) {
> int count = 100;
> for (int i = 0; i < count; i++) {
> Thread t = new Thread();
> t.start();
> try {
> t.join();
> } catch (InterruptedException e) {
> }
> Thread.State ts = t.getState();
> System.out.println("state : " + ts);
> }
> }
> }
> The test alternately prints "RUNNABLE" and "TERMINATED" on DRLVM:
> > $DRLVM -showversion TestGetStateJoined
> Apache Harmony Launcher : (c) Copyright 1991, 2006 The Apache Software Foundation or its licensors, as applicable.
> java version "1.5.0"
> pre-alpha : not complete or compatible
> svn = r512139, (Feb 27 2007), Linux/ia32/gcc 3.3.3, debug build
> http://incubator.apache.org/harmony
> state : TERMINATED
> state : RUNNABLE
> state : TERMINATED
> state : TERMINATED
> state : TERMINATED
> state : RUNNABLE
> state : TERMINATED
> ...
> while on RI it always prints "TERMINATED":
> > $RI -showversion TestGetStateJoined
> java version "1.5.0_08"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_08-b03)
> Java HotSpot(TM) Server VM (build 1.5.0_08-b03, mixed mode)
>
> state : TERMINATED
> state : TERMINATED
> state : TERMINATED
> ....
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.