JDK-4478469 : single stepping with lots of Java threads is very slow
  • Type: Enhancement
  • Component: vm-legacy
  • Sub-Component: jvmdi
  • Affected Version: 1.4.0
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_7
  • CPU: sparc
  • Submitted: 2001-07-11
  • Updated: 2003-02-05
  • Resolved: 2002-08-27
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other
1.4.2 mantisFixed
Related Reports
Relates :  
Relates :  
Relates :  
Description
Single stepping through IFDEF (Forte developer IDE) java code using
any java debugger (jdbx or Forte for Java) is very
slow. See the comments section for more information.

Comments
CONVERTED DATA BugTraq+ Release Management Values COMMIT TO FIX: mantis-beta FIXED IN: mantis INTEGRATED IN: mantis
14-06-2004

EVALUATION . ###@###.### 2001-08-14 This is a very helpful suggestion and in fact both JVMPI and JVMDI could benefit from suspend/resume requests with lists of threads. Given the timing of the Merlin release, we are going to recategorize this as an RFE for a next release. For a next release we are both looking into internal improvements in ways to implement suspension and resumption as well as modifications to the API such as this one. The API changes obviously would require a JSR so we would like to prototype a couple of possibilities first and work closely with the Forte folks to see what best meets their needs.
11-06-2004

SUGGESTED FIX ###@###.### 2002-05-24 See 4467269-webrev.tar for the proposed API additions. ###@###.### 2002-06-18 See 4467269-webrev-cr1.tar for the relative changes made during code review round 1. See 4467269-webrev-cr1-all.tar for all of the changes relative to Merlin-Update2. There is a single line change after code review round 2: *** jvmdi.cpp-1.120 Tue Jun 18 10:05:55 2002 --- jvmdi.cpp Tue Jun 18 10:02:46 2002 *************** *** 2562,2577 **** --- 2562,2578 ---- if (java_thread->thread_state() == _thread_in_native) { // We need to try and suspend native threads here. Threads in // other states will self-suspend on their next transition. if (!JvmdiThreads::suspend(java_thread)) { // The thread has not yet run or is in process of exiting. Force // another safepoint to make sure that this thread transitions. needSafepoint++; results[i] = JVMDI_ERROR_INVALID_THREAD; + continue; } } else { needSafepoint++; } results[i] = JVMDI_ERROR_NONE; // indicate successful suspend } There is one more minor change that showed up in the hopper_baseline port; deleting a unused variable: ------- jvmdi.cpp ------- *** /tmp/sccs.nAaiQw Tue Jun 18 17:10:18 2002 --- jvmdi.cpp Tue Jun 18 16:49:15 2002 *************** *** 2525,2531 **** } int needSafepoint = 0; // > 0 if we need a safepoint - int successCnt = 0; // # of successful suspends for (int i = 0; i < reqCnt; i++) { JavaThread *java_thread = JvmdiInternal::get_JavaThread(reqList[i]); --- 2525,2530 ----
11-06-2004

PUBLIC COMMENTS .
10-06-2004