You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by "Eugene S. Ostrovsky (JIRA)" <ji...@apache.org> on 2006/12/01 15:58:23 UTC

[jira] Updated: (HARMONY-2377) [drlvm][jvmti] TI events are generated by VM in the incorrect order

     [ http://issues.apache.org/jira/browse/HARMONY-2377?page=all ]

Eugene S. Ostrovsky updated HARMONY-2377:
-----------------------------------------

    Attachment: H-2377-Fixed-order-of-jvmti-events-relative-to-ThreadStart-ThreadEnd-events.patch

 Added patch: 
  H-2377-Fixed-order-of-jvmti-events-relative-to-ThreadStart-ThreadEnd-events.patch

1. Fixed monitor related events not to be sent before the LIVE phase.
2. Fixed TheadEnd event to be sent after run_java_detach() to avoid sending monitor events after TheadEnd.
3. Some code beautification.

NOTE:
It seems that TPTP profiler contradicts JVMTI spec.
"It is possible for other events to be generated on a thread before its thread start event."
http://java.sun.com/j2se/1.5.0/docs/guide/jvmti/jvmti.html#ThreadStart


> [drlvm][jvmti] TI events are generated by VM in the incorrect order
> -------------------------------------------------------------------
>
>                 Key: HARMONY-2377
>                 URL: http://issues.apache.org/jira/browse/HARMONY-2377
>             Project: Harmony
>          Issue Type: Bug
>          Components: DRLVM
>         Environment: Windows/ia32, Linux/ia32 
>            Reporter: Ruslan Scherbakov
>         Attachments: H-2377-Fixed-order-of-jvmti-events-relative-to-ThreadStart-ThreadEnd-events.patch, JVMTI_PhaseTest.zip
>
>
> TPTP profiler relies on the strict order of the JVMTI events. Below is the output from the test where DRLVM misses to send thread start event before monitor wait/enter events. In addition JVMTI spec says that Monitor Contended Enter 
> Monitor Contended Entered, Monitor Wait, Monitor Waited should be sent n the JVMTI LIVE phase.
> DRLVM>>>
> =========================================================================================
> 1. run initial class
> 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 = r@svn.revision@, (Nov 28 2006), Windows/ia32/msvc 1310, release build
> http://incubator.apache.org/harmony
> HELLO.world
> =========================================================================================
> 2. run initial class WITH agent
> Agent_OnLoad: pVm=010020A0, options=proxy
> Agent_OnLoad: OK
>  1. MonitorWait            : thread=024E0B00,203552B4, pJniEnv=01057288, object=0013F224,20380108, timeout=0
>  2. MonitorContendedEnter  : thread=024E0B00,203552B4, pJniEnv=01057288, object=0013F224,20380108
>  3. ThreadStart            : thread=024F3F50,2038003C, pJniEnv=024F20B8
>  4. MonitorContendedEntered: thread=024E0B00,203552B4, pJniEnv=01057288, object=0013F224,20380108
>  5. MonitorWaited          : thread=024E0B00,203552B4, pJniEnv=01057288, object=0013F224,20380108, timeout=0
>  6. MonitorWait            : thread=024F3F50,2038003C, pJniEnv=024F20B8, object=028BF9D4,2037FDD4, timeout=0
>  7. MonitorContendedEnter  : thread=024F3F50,2038003C, pJniEnv=024F20B8, object=028BF9D4,2037FDD4
>  8. VMInit                 : thread=024E5730,203552B4, pJniEnv=01057288
>  9. ThreadStart            : thread=024E0B00,203552B4, pJniEnv=01057288
> HELLO.world
> 10. ThreadEnd              : thread=024E0B00,203552B4, pJniEnv=01057288
> 11. ThreadStart            : thread=02574790,2081FFC4, pJniEnv=01057288
> 12. MonitorWait            : thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4D8,20380404, timeout=0
> 13. MonitorContendedEnter  : thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4D8,20380404
> 14. ThreadStart            : thread=024FB4E0,20380360, pJniEnv=0256E7D0
> 15. MonitorContendedEntered: thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4D8,20380404
> 16. MonitorWaited          : thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4D8,20380404, timeout=0
> 17. MonitorWait            : thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4E8,20380404, timeout=0
> 18. MonitorContendedEnter  : thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4E8,20380404
> 19. ThreadEnd              : thread=024FB4E0,20380360, pJniEnv=0256E7D0
> 20. MonitorContendedEntered: thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4E8,20380404
> 21. MonitorWaited          : thread=02574790,2081FFC4, pJniEnv=01057288, object=0013F4E8,20380404, timeout=0
> 22. MonitorContendedEntered: thread=024F3F50,2038003C, pJniEnv=024F20B8, object=028BF9D4,2037FDD4
> 23. MonitorWaited          : thread=024F3F50,2038003C, pJniEnv=024F20B8, object=028BF9D4,2037FDD4, timeout=0
> 24. ThreadEnd              : thread=024F3F50,2038003C, pJniEnv=024F20B8
> 25. VMDeath                : pJniEnv=01057288
> ERROR  : event 1 does not have a matching ThreadStart event
> WARNING: event 1 should be sent during the LIVE phase
> ERROR  : event 2 does not have a matching ThreadStart event
> WARNING: event 2 should be sent during the LIVE phase
> ERROR  : event 4 does not have a matching ThreadStart event
> WARNING: event 4 should be sent during the LIVE phase
> ERROR  : event 5 does not have a matching ThreadStart event
> WARNING: event 5 should be sent during the LIVE phase
> WARNING: event 6 should be sent during the LIVE phase
> WARNING: event 7 should be sent during the LIVE phase
> JRockit>>>
> =========================================================================================
> 1. run initial class
> java version "1.5.0_06"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
> BEA JRockit(R) (build R26.4.0-63-63688-1.5.0_06-20060626-2259-win-ia32, )
> HELLO.world
> =========================================================================================
> 2. run initial class WITH agent
> Agent_OnLoad: pVm=005ACF84, options=proxy
> Agent_OnLoad: OK
>  1. ThreadStart            : thread=00394FE0,01101DD0, pJniEnv=00395124
>  2. ThreadStart            : thread=40B89530,01104B38, pJniEnv=40B89674
>  3. ThreadStart            : thread=40BCCAD0,01104C50, pJniEnv=40BCCC14
>  4. ThreadStart            : thread=40BDF268,01104D78, pJniEnv=40BDF3AC
>  5. ThreadStart            : thread=40BDFA28,01104EA0, pJniEnv=40BDFB6C
>  6. ThreadStart            : thread=40BFDB80,01114130, pJniEnv=40BFDCC4
>  7. VMInit                 : thread=00394FE0,01101DD0, pJniEnv=00395124
>  8. ThreadStart            : thread=411D5AF8,0111D3E8, pJniEnv=411D5C3C
>  9. ThreadStart            : thread=411D63A8,0111D540, pJniEnv=411D64EC
> HELLO.world
> 10. ThreadEnd              : thread=00394FE0,01101DD0, pJniEnv=00395124
> 11. ThreadStart            : thread=411D8FB0,0112A7A0, pJniEnv=411D90F4
> 12. ThreadEnd              : thread=411D8FB0,0112A7A0, pJniEnv=411D90F4
> 13. VMDeath                : pJniEnv=411D90F4
> SUN>>>
> =========================================================================================
> 1. run initial class
> java version "1.5.0_09"
> Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_09-b03)
> Java HotSpot(TM) Client VM (build 1.5.0_09-b03, mixed mode)
> HELLO.world
> =========================================================================================
> 2. run initial class WITH agent
> Agent_OnLoad: pVm=6D815BC0, options=proxy
> Agent_OnLoad: OK
>  1. ThreadStart            : thread=00A83A18,02AD05F8, pJniEnv=00A82EC0
>  2. MonitorWait            : thread=00A842C8,02AD05F8, pJniEnv=00A82EC0, object=00A842CC,02AD05F0, timeout=0
>  3. ThreadStart            : thread=00A8DAF8,02AD06F0, pJniEnv=00A84460
>  4. MonitorWait            : thread=00A8DB98,02AD06F0, pJniEnv=00A84460, object=00A8DB9C,02AD06E0, timeout=0
>  5. VMInit                 : thread=00A7F788,02AD04F8, pJniEnv=00036E70
>  6. ThreadStart            : thread=00A8EF40,02AEB4D0, pJniEnv=00A8DD58
>  7. ThreadStart            : thread=00A7F788,02AD04F8, pJniEnv=00036E70
> HELLO.world
>  8. ThreadEnd              : thread=00A7F788,02AD04F8, pJniEnv=00036E70
>  9. ThreadStart            : thread=00A82D28,02AF70F8, pJniEnv=00036E70
> 10. ThreadEnd              : thread=00A82D28,02AF70F8, pJniEnv=00036E70
> 11. VMDeath                : pJniEnv=00036E70
> WARNING: event 2 should be sent during the LIVE phase
> WARNING: event 4 should be sent during the LIVE phase

-- 
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