harmony-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ivan Popov (JIRA)" <j...@apache.org>
Subject [jira] Updated: (HARMONY-3341) [drlvm][jvmti] StopThread() does not interrupt thread in Object.wait(timeout) until timeout expired
Date Tue, 27 Mar 2007 10:27:32 GMT

     [ https://issues.apache.org/jira/browse/HARMONY-3341?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Ivan Popov updated HARMONY-3341:
--------------------------------

    Environment: Windows/ia32, Linux/ia32, Harmony-jdk-r522770  (was: Windows/ia32, Linux/ia32,
Harmony-jdk-r515478)
        Summary: [drlvm][jvmti] StopThread() does not interrupt thread in Object.wait(timeout)
until timeout expired  (was: [jdktools][jpda] JDWP test org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest
fails with "operation timed out")

I'm still able to reproduce this failure with Harmony-jdk-r522770.

Indeed, the problem is in JVMTI function StopThread(). It does not interrupt thread waiting
in Object.wait(timeout) until timeout is expired. Only after timeout is expired and thread
returned from Object.wait(), then exception specified in StopThread() is thrown.

Since this is JVMTI problem, I'm changing subject and linking this issue to DRLVM component.

Please note, that sometime test may pass. This is because the timeout used in Object.wait()
and default time used in test for checking thread interruption are equal (1 minute). This
leads that exception is sometime thrown after waiting timeout expired, but before test checks
for interruption. To make this failure stable, specify test timeout less than 1 minute (e.g.,
10 seconds = 10000 milliseconds):

   deploy/jdk/bin/java -classpath ../common_resources/depends/jars/junit_3.8.2/junit.jar:build/tests/classes
\
  -Djpda.settings.timeout=10000 \
   org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest 


> [drlvm][jvmti] StopThread() does not interrupt thread in Object.wait(timeout) until timeout
expired
> ---------------------------------------------------------------------------------------------------
>
>                 Key: HARMONY-3341
>                 URL: https://issues.apache.org/jira/browse/HARMONY-3341
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM, JDK
>         Environment: Windows/ia32, Linux/ia32, Harmony-jdk-r522770
>            Reporter: Ivan Popov
>
> The following JDWP unit test
>   org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest
> fails on both Windows and Linux platforms with the same diagnostics:
> testStop001: get threadID to Stop...
> testStop001: ID of the tested thread to Stop = 1320
> STDOUT> [SYNC] Message sent: ready
> testStop001: get throwable for Stop command...
> testStop001: throwable = ObjectID: 2040
> testStop001: send "Stop" command
> testStop001: wait for Debuggee message about test status...
> [SYNC] Waiting...
> STDOUT> TestedThread: Exception is caught: java.lang.NullPointerException
> STDOUT> TestedThread: PASSED: It is expected Exception
> <...>
> org.apache.harmony.jpda.tests.framework.TestErrorException: java.net.SocketTimeoutException:
The operation timed out 
> at org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer.receiveMessage (JPDADebuggeeSynchronizer.java:132)

> at org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest.testStop001(StopTest.java:101)

> at java.lang.reflect.VMReflection.invokeMethod(VMReflection.java)
> Caused by: java.net.SocketTimeoutException: The operation timed out at org.apache.harmony.luni.net.PlainSocketImpl.read(PlainSocketImpl.java:544)

> at org.apache.harmony.luni.net.SocketInputStream.read(SocketInputStream.java:60) 
> at java.io.DataInputStream.readUnsignedShort(DataInputStream.java) at java.io.DataInputStream.readUTF(DataInputStream.java)

> at org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer.receiveMessage(JPDADebuggeeSynchronizer.java:126)

> at org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest.testStop001(StopTest.java:101)

> ... 13 more
> The problem is that JVMTI function StopThread() does not throw specified exception in
a waiting thread, until waiting timeout is expired.
> To reproduce this failure:
> 1. create Harmony JDK with federated build:
>     svn checkout https://svn.apache.org/repos/asf/harmony/enhanced/trunk
>     cd trunk
>     ant
> 2. goto jdktools directory, add junit to classpath, and run particular test:
>     cd working_jdktools
>     export CLASSPATH=<...>/trunk/common_resources/depends/jars/junit_3.8.2/junit.jar
>     ant test -Dbuild.module=jpda -Dtest.case=org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest
> 3. see results in <...>/trunk/working_jdktools/build/test_report/html/index.html
> It is possible also to run test directly from command line:
>    cd working_jdktools
>    deploy/jdk/bin/java -classpath ../common_resources/depends/jars/junit_3.8.2/junit.jar:build/tests/classes
\
>    org.apache.harmony.jpda.tests.jdwp.ThreadReference.StopTest 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message