Hello

Yesterday I've created a patch that fixes a bug in JDWP agent. The agent didn't handle StepRequest command when there is no line number information in the method to step. JDWP spec states [1] that in this case StepRequest has to work in the MIN mode (stepping on every bytecode). The patch makes it possible, so in case currentLine == -1, it would fire out the event every time.

I would like to commit this fix for M3 because there may be quite a lot of cases when java classes lack line number information, bug people would still want debugging to work correctly.

[1] http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html#JDWP_StepSize

Gregory Shimansky (JIRA) wrote:
     [ 
https://issues.apache.org/jira/browse/HARMONY-4823?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gregory Shimansky updated HARMONY-4823:
---------------------------------------

    Attachment: HARMONY-4823.patch

Actually I think that one of the checks in my patch is redundant. I attach a 
shorter versions. It seems to be working ok.

[jdktools][jdwp] 2 jdtdebug tests fail with similar messages in EUT 3.2
-----------------------------------------------------------------------

                Key: HARMONY-4823
                URL: https://issues.apache.org/jira/browse/HARMONY-4823
            Project: Harmony
         Issue Type: Bug
         Components: JDK
        Environment: All
           Reporter: Ilya Berezhniuk
           Assignee: Gregory Shimansky
        Attachments: HARMONY-4823.patch, HARMONY-4823.patch, 
StepIntoSelectionClass.java


When massive failures with 'did not suspend' error (HARMONY-4631) do not occur, 
2 tests fail in EUT 3.2 jdt debug suite with following close error messages:
------------------------------------------
org.eclipse.jdt.debug.tests.core.StepIntoSelectionTests.testStepIntoBinaryMethod
Should be in method 'addElement' expected:<addElement> but was:<step>
junit.framework.ComparisonFailure: Should be in method 'addElement' 
expected:<addElement> but was:<step>
    at 
org.eclipse.jdt.debug.tests.core.StepIntoSelectionTests.testStepIntoBinaryMethod(StepIntoSelectionTests.java:174)
    at java.lang.reflect.VMReflection.invokeMethod(Native Method)
    at org.eclipse.jdt.debug.tests.DebugSuite$1.run(DebugSuite.java:53)
    at java.lang.Thread.run(Unknown Source)
------------------------------------------
org.eclipse.jdt.debug.tests.core.StepIntoSelectionTests.testStepIntoBinaryConstructor
Should be in constructor expected:<<init>> but was:<step>
junit.framework.ComparisonFailure: Should be in constructor expected:<<init>> but 
was:<step>
    at 
org.eclipse.jdt.debug.tests.core.StepIntoSelectionTests.testStepIntoBinaryConstructor(StepIntoSelectionTests.java:209)
    at java.lang.reflect.VMReflection.invokeMethod(Native Method)
    at org.eclipse.jdt.debug.tests.DebugSuite$1.run(DebugSuite.java:53)
    at java.lang.Thread.run(Unknown Source)
------------------------------------------
Looks like it can be a regression in JVMTI stepping algorithm.
To reproduce failures:
1) Use Harmony JDK from 
http://people.apache.org/builds/harmony/snapshots/r576550/apache-harmony-jdk-r576550-windows-x86-32-snapshot.zip
2) Download 
http://mirrors.nsa.co.il/eclipse/eclipse/downloads/drops/R-3.2-200606291905/eclipse-Automated-Tests-3.2.zip
3) To run with script or command line, use instructions in 
eclipse-testing/readme.html from eclipse-Automated-Tests-3.2.zip archive
4) To run from Eclipse GUI follow the instruction in 
http://wiki.apache.org/harmony/Eclipse_Unit_Tests_Pass_on_DRLVM#How_to_run_EUT_individual



--
Gregory

Reply via email to