Ivan Popov wrote:
I agree with Gregory, this is very strange and unexpected usage of
JDWP agent. It's not supported by JDWP specification and thus may vary
in different implementation depending on how implementation handles
errors
The main problem is that technically JDWP protocol is symmetric,
that's why it's possible for JDWP agents to connect to each other and
even perform handshake. After successfull handshake several JDWP
packets are transferred over JDWP connection between the agents.
There are three kinds of JDWP packets (commands, replies, events)
which have similar structure. JDWP spec defines that commands may only
transfer to agent, while replies and events may only transfer from
agent. In this particular case this rule is broken. Current Harmony's
implementation relies on this order and reports errors if it is broken
(may be not in a very good manner). RI's implementation seems just
silently ignoring unexpected packets and does not print errors.
Hi Ivan,
Yes, I know this is an unusual usage of JDWP - I thought that the
"command not implemented EVENT/COMPOSITE[64/100]" error was indicating
some missing functionality, but if you believe that this is just caused
by handshake failure then I agree that it should be ok to leave it as is
(or print a better diagnostic message).
Thanks,
Oliver
It's quite easy to modify Harmony's agent to recognize such situation
and provide more meaningful diagnostics. I don't think that RI's
behavior with silently ignoring errors is better in this case.
Thanks.
Ivan
On Fri, Feb 22, 2008 at 6:52 PM, Oliver Deakin
<[EMAIL PROTECTED]> wrote:
Gregory Shimansky wrote:
> Oliver Deakin said the following on 22.02.2008 12:35:
>> Hi Jimmy,
>>
>> This is a great idea, but I have a feeling there may still need to be
>> some work done on the current version. I have noticed the following:
>>
>> 1) You cannot launch Harmony with
>> java -agentlib:jdwp=transport=dt_socket,server=n,address=8888
>>
>> without specifying a class at the end of the command line. This is
>> not a major issue, just a difference to the RI. If you run the above
>> command line, the launcher short circuits to the launcher command
>> line help and exits.*
>> *
>> 2) If I try to launch two Harmony VMs using the following command lines:
>> java
>> -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8888
>> HelloWorld
>> java -agentlib:jdwp=transport=dt_socket,server=n,address=8888 HelloWorld
>
> I am not sure I understand the intention to run these two command
> lines. To connect to a JDWP agent you need a real JDWP client, e.g.
> Eclipse or jdb. AFAIU JDWP agent cannot talk to itself over JDWP
> protocol.
>
Hi Gregory,
Im not saying that this is a standard way to connect, but it appears to
expose a difference between implementations. You can run these two
command lines on the RI without any errors whatsoever. Although this is
not normal practise it leaves me wondering what the cause of these
errors are on Harmony.
Regards,
Oliver
--
Oliver Deakin
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number
741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
--
Oliver Deakin
Unless stated otherwise above:
IBM United Kingdom Limited - Registered in England and Wales with number 741598.
Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU