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