You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by wj...@apache.org on 2007/02/12 06:25:25 UTC

svn commit: r506286 - /harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java

Author: wjwashburn
Date: Sun Feb 11 21:25:22 2007
New Revision: 506286

URL: http://svn.apache.org/viewvc?view=rev&rev=506286
Log:
H2218, check if thread is alive before attempting
build, build test pass on winxp, RHEL 4, w/ gcc 4.0.2


Modified:
    harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java

Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java?view=diff&rev=506286&r1=506285&r2=506286
==============================================================================
--- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java (original)
+++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java Sun Feb 11 21:25:22 2007
@@ -838,10 +838,12 @@
             throw new NullPointerException("The argument is null!");
         }
         synchronized (lock) {
-            int status = VMThreadManager.stop(this, throwable);
-            if (status != VMThreadManager.TM_ERROR_NONE) {
-                throw new InternalError(
-                    "Thread Manager internal error " + status);
+            if (isAlive()) {
+                int status = VMThreadManager.stop(this, throwable);
+                if (status != VMThreadManager.TM_ERROR_NONE) {
+                    throw new InternalError(
+                        "Thread Manager internal error " + status);
+                }
             }
         }
     }



Re: svn commit: r506286 - /harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java

Posted by Salikh Zakirov <Sa...@Intel.com>.
Geir Magnusson Jr. wrote:
> Just curious - is it harmful to call VMThreadManager.stop() if the
> thread isn't alive?

Currently, calling VMThreadManager.stop() will do no harm,
(it just sets a callback in a thread block)
as DRLVM's hythr.dll allocates native thread block when Thread object is
created, and never actually frees thread block.
Instead, the thread block might be reused later after Thread object
became unreachable.

If memory management of thread block ever becomes explicit
(i.e. allocate thread block on Thread.start() and release it just before thread
terminates), then doing anything with thread block without making sure
that the thread is still alive may cause crashes.


Re: svn commit: r506286 - /harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/javasrc/java/lang/Thread.java

Posted by "Geir Magnusson Jr." <ge...@pobox.com>.
Weldon,

Just curious - is it harmful to call VMThreadManager.stop() if the  
thread isn't alive?

geir


On Feb 12, 2007, at 12:25 AM, wjwashburn@apache.org wrote:

> Author: wjwashburn
> Date: Sun Feb 11 21:25:22 2007
> New Revision: 506286
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=506286
> Log:
> H2218, check if thread is alive before attempting
> build, build test pass on winxp, RHEL 4, w/ gcc 4.0.2
>
>
> Modified:
>     harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/ 
> javasrc/java/lang/Thread.java
>
> Modified: harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/ 
> javasrc/java/lang/Thread.java
> URL: http://svn.apache.org/viewvc/harmony/enhanced/drlvm/trunk/vm/ 
> vmcore/src/kernel_classes/javasrc/java/lang/Thread.java? 
> view=diff&rev=506286&r1=506285&r2=506286
> ====================================================================== 
> ========
> --- harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/ 
> javasrc/java/lang/Thread.java (original)
> +++ harmony/enhanced/drlvm/trunk/vm/vmcore/src/kernel_classes/ 
> javasrc/java/lang/Thread.java Sun Feb 11 21:25:22 2007
> @@ -838,10 +838,12 @@
>              throw new NullPointerException("The argument is null!");
>          }
>          synchronized (lock) {
> -            int status = VMThreadManager.stop(this, throwable);
> -            if (status != VMThreadManager.TM_ERROR_NONE) {
> -                throw new InternalError(
> -                    "Thread Manager internal error " + status);
> +            if (isAlive()) {
> +                int status = VMThreadManager.stop(this, throwable);
> +                if (status != VMThreadManager.TM_ERROR_NONE) {
> +                    throw new InternalError(
> +                        "Thread Manager internal error " + status);
> +                }
>              }
>          }
>      }
>
>