EVALUATION
--
This will be fixed in Mustang build 79, and in J2SE 5.0 update 8.
Mustang build 79 is scheduled to be available at http://mustang.dev.java.net
by April 10. The schedule for 5.0 Update 8 has not been finalized. It will
probably be released in the fall (2006).
|
|
|
EVALUATION
--
The Linux kernel version 2.6.15 contains an implementation of RFC
3465. This is intended to speed up some forms of network usage and
increase security, but it slows down others, JDWP being one of
them. We can avoid this slowdown by changing the back-end agent to not
write lots of small packets. It shouldn't be doing this in the first
place since each packet has overhead which soaks up bandwidth.
At this time, this problem does not happen on any version of Windows ,
Solaris, or Linux kernel 2.6.14 or earlier.
|
|
|
EVALUATION
--
We have a preliminary fix to the socket transport that it writes the JDWP header in a single send. We are currently testing this change.
|
|
|
WORK AROUND
CUSTOMER SUBMITTED WORKAROUNDs (unverified):
1) Use a linux kernel before 2.6.15 (this is a change in 2.6.15)
or
2) run "sudo sysctl -w net.ipv4.tcp_abc=0" as root to disable Nagles prior to debugging. However this disables it system wide may not be appropriate.
|
|
|
WORK AROUND
--
Another workaround is of course to you another transport library. Since 5.0 there has been a transport interface to allow other transport libraries be used.
|
|
|
EVALUATION
Yes, this is a bug in the socket transport library. It appears to have existed since the original JPDA implementation (1998 or 1999) but wasn't reported until now. The socket transport disables nagle but then writes the JDWP packet headers as a sequence of 4 or 5 writes (a write for each field and there are 4 or 5 fields depending on if the packet is a command or reply packet). This needs to be fixed in Mustang and 5.0u8 as it will make debugging impossible for developers that upgrade their Linux kernel.
|
|
|