This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.
###this bug is moved from bugster database #6257334 ### easiest way to reproduce - use this simple midlet public class Midlet extends MIDlet { public void startApp() { Display.getDisplay(this); } public void pauseApp() { } public void destroyApp(boolean unconditional) { } } have breakpoint on Display.getDisplay(this) and debug, when it stops on breakpoint do Step Into (F7), a different exception appears when trying it more times... ------------------------------------------------------------------------------- >Log Session: Tuesday, April 19, 2005 5:44:34 PM CEST >System Info: Product Version = NetBeans IDE 4.1 RC1 (Build 200504171930) Operating System = Windows XP version 5.1 running on x86 Java; VM; Vendor = 1.5.0_02; Java HotSpot(TM) Client VM 1.5.0_02-b09; Sun Microsystems Inc. Java Home = C:\Program Files\Java\jdk1.5.0_02\jre System Locale; Encod. = cs_CZ (nb); Cp1250 Home Dir; Current Dir = C:\Documents and Settings\lukas.hasik; F:\netbeans\nb41-prerc1-me0418\bin IDE Install; User Dir = F:\netbeans\nb41-prerc1-me0418\platform5; F:\netbeans\userdirs\nb41-prerc1-0418-3 CLASSPATH = F:\netbeans\nb41-prerc1-me0418\platform5\lib\boot.jar;C:\Program Files\Java\jdk1.5.0_02\lib\dt.jar;C:\Program Files\Java\jdk1.5.0_02\lib\tools.jar Boot & ext classpath = C:\Program Files\Java\jdk1.5.0_02\jre\lib\rt.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\i18n.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\jce.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.5.0_02\jre\classes;C:\Program Files\Java\jdk1.5.0_02\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.5.0_02\jre\lib\ext\sunpkcs11.jar Dynamic classpath = F:\netbeans\nb41-prerc1-me0418\platform5\core\core.jar;F:\netbeans\nb41-prerc1-me0418\platform5\core\openide-loaders.jar;F:\netbeans\nb41-prerc1-me0418\platform5\core\openide.jar;F:\netbeans\nb41-prerc1-me0418\platform5\core\org-netbeans-swing-plaf.jar;F:\netbeans\nb41-prerc1-me0418\platform5\core\updater.jar;F:\netbeans\nb41-prerc1-me0418\nb4.1\core\org-netbeans-upgrader.jar;F:\netbeans\nb41-prerc1-me0418\nb4.1\core\locale\core_nb.zip;F:\netbeans\nb41-prerc1-me0418\ide5\core\org-netbeans-modules-utilities-cli.jar ------------------------------------------------------------------------------- <snip modules/> com.sun.jdi.request.InvalidRequestStateException: step request instance of java.lang.Thread(name='KVM_main', id=16441) (deleted) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.invalidState(EventRequestManagerImpl.java:96) at com.sun.tools.jdi.EventRequestManagerImpl$ClassVisibleEventRequestImpl.addClassExclusionFilter(EventRequestManagerImpl.java:272) at org.netbeans.modules.debugger.jpda.actions.StepIntoActionProvider.addPatternsToRequest(StepIntoActionProvider.java:249) at org.netbeans.modules.debugger.jpda.actions.StepIntoActionProvider.propertyChange(StepIntoActionProvider.java:125) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:270) at org.netbeans.modules.debugger.jpda.actions.SmartSteppingFilterImpl.addExclusionPatterns(SmartSteppingFilterImpl.java:67) at org.netbeans.modules.debugger.jpda.ui.SmartSteppingImpl.addExclusionPatterns(SmartSteppingImpl.java:87) at org.netbeans.modules.debugger.jpda.ui.SmartSteppingImpl.stopHere(SmartSteppingImpl.java:80) at org.netbeans.modules.debugger.jpda.actions.CompoundSmartSteppingListener.stopHere(CompoundSmartSteppingListener.java:79) at org.netbeans.modules.debugger.jpda.actions.StepActionProvider.exec(StepActionProvider.java:183) at org.netbeans.modules.debugger.jpda.util.Operator$1.run(Operator.java:140) at java.lang.Thread.run(Thread.java:595) com.sun.jdi.request.InvalidRequestStateException: step request instance of java.lang.Thread(name='KVM_Threade710f4', id=65553) (deleted) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.invalidState(EventRequestManagerImpl.java:96) at com.sun.tools.jdi.EventRequestManagerImpl$ClassVisibleEventRequestImpl.addClassExclusionFilter(EventRequestManagerImpl.java:272) at org.netbeans.modules.debugger.jpda.actions.StepIntoActionProvider.addPatternsToRequest(StepIntoActionProvider.java:249) at org.netbeans.modules.debugger.jpda.actions.StepIntoActionProvider.propertyChange(StepIntoActionProvider.java:125) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:333) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:270) at org.netbeans.modules.debugger.jpda.actions.SmartSteppingFilterImpl.addExclusionPatterns(SmartSteppingFilterImpl.java:67) at org.netbeans.modules.debugger.jpda.ui.SmartSteppingImpl.addExclusionPatterns(SmartSteppingImpl.java:87) at org.netbeans.modules.debugger.jpda.ui.SmartSteppingImpl.stopHere(SmartSteppingImpl.java:80) at org.netbeans.modules.debugger.jpda.actions.CompoundSmartSteppingListener.stopHere(CompoundSmartSteppingListener.java:79) at org.netbeans.modules.debugger.jpda.actions.StepActionProvider.exec(StepActionProvider.java:183) at org.netbeans.modules.debugger.jpda.util.Operator$1.run(Operator.java:140) at java.lang.Thread.run(Thread.java:595) com.sun.jdi.request.InvalidRequestStateException: step request instance of java.lang.Thread(name='KVM_Threade71084', id=65553) (deleted) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.invalidState(EventRequestManagerImpl.java:96) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.setEnabled(EventRequestManagerImpl.java:136) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.disable(EventRequestManagerImpl.java:131) at org.netbeans.modules.debugger.jpda.actions.StepIntoActionProvider.exec(StepIntoActionProvider.java:149) at org.netbeans.modules.debugger.jpda.util.Operator$1.run(Operator.java:140) at java.lang.Thread.run(Thread.java:595) com.sun.jdi.request.InvalidRequestStateException: step request instance of java.lang.Thread(name='KVM_main', id=16441) (deleted) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.invalidState(EventRequestManagerImpl.java:96) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.setEnabled(EventRequestManagerImpl.java:136) at com.sun.tools.jdi.EventRequestManagerImpl$EventRequestImpl.disable(EventRequestManagerImpl.java:131) at org.netbeans.modules.debugger.jpda.actions.StepIntoActionProvider.exec(StepIntoActionProvider.java:149) at org.netbeans.modules.debugger.jpda.util.Operator$1.run(Operator.java:140) at java.lang.Thread.run(Thread.java:595) com.sun.jdi.request.InvalidRequestStateException #### 2005-04-19 16:14:49 GMT I'm using java 1.4.2_02 b03 #### 2005-04-19 16:31:12 GMT <br><br> *this can be reproduced even in j2se project*, main problem is that when you step into sources that you don't have the debugger is confused and crash. -it's a regression to nb41-beta
1) Generaly said Step Into works. It is tested. So, it should be some special usecase. 2) Can you attach usecase for Java, if its repdoducible there?
Fixing this concrete exception is not a problem. But I am not sure if its cause of your problem. Does this exception occures always?
If I remove java.lang from src.zip, and try to step into java.lang sources (in J2SE project), debugger randomly seems to be confused - stepping and stopping in sources which does not exist at all. Getting this exception: Annotation: Exception occurred in Request Processor com.sun.jdi.VMDisconnectedException: Socket closed at com.sun.tools.jdi.TargetVM.send(TargetVM.java:262) at com.sun.tools.jdi.VirtualMachineImpl.sendToTarget(VirtualMachineImpl.java:879) at com.sun.tools.jdi.PacketStream.send(PacketStream.java:41) at com.sun.tools.jdi.JDWP$ThreadReference$Status.enqueueCommand(JDWP.java:4126) at com.sun.tools.jdi.JDWP$ThreadReference$Status.process(JDWP.java:4112) at com.sun.tools.jdi.ThreadReferenceImpl.jdwpStatus(ThreadReferenceImpl.java:184) at com.sun.tools.jdi.ThreadReferenceImpl.isSuspended(ThreadReferenceImpl.java:200) at org.netbeans.modules.debugger.jpda.JPDADebuggerImpl.run(JPDADebuggerImpl.java:884) at org.openide.util.Task.run(Task.java:189) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:330) [catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:721) I can show the difference between Beta and RC1
Are sources for your application enabled in sources view?
In both situation, it is able to step into and stop in non existing code.
What does it mean step into non existing code?
i.e :Thread main stopped at String.java:2236. but all java.lang is not available, but debugger is still "somewhere". You should press F7 couple times, to get cursor line visible again.
The same type of issue apparently breaks whole NB Mobility debugging. Debugger step into source which does not exist a get completly confused
OK. What does it mean "completely confused"? I am simply still not able to reproduce it. Can you create step by step "how to reproduce it" use case, plese? Attach some project / sources here... Thanks
Created attachment 21766 [details] j2me project for reproduction
steps to reproduce in j2me project -have mobility pack installed in netbeans -unzip and open attached project in nb -place breakpoint to line Display.getDisplay(this); in hanz/Midlet.java file -Debug project -wait when emulator will appeared and 'Launch' midlet -it stops on breakpoint, do F7 - step into *debuger goes to Object and get confused
OK. Thanks. Can you do the same excersize for J2SE usecase?
different output from beta and rc, --beta------------------------------------- Attaching to localhost:4146 User program running Breakpoint hit at line 19 in class hanz.Midlet by thread KVM_main. Thread KVM_main stopped at Midlet.java:19. User program running Thread KVM_main stopped at Midlet.java:19. User program running Thread KVM_main stopped at Midlet.java:20. User program running -------------------------------------------- --rc---------------------------------------- Attaching to localhost:4295 User program running Breakpoint hit at line 19 in class hanz.Midlet by thread KVM_main. Thread KVM_main stopped at Midlet.java:19. Thread KVM_main stopped at Display.java:558. Thread KVM_main stopped at Display.java:558. Thread KVM_main stopped at Midlet.java:19. Thread KVM_main stopped at Object.java:356. User program running Thread KVM_main stopped at Object.java:356. Thread KVM_main stopped at Object.java:356. Thread KVM_main stopped at Object.java:356. it steps into classes where it shouldn't. It's definitely regression from beta where it worked perfectly.
It is apparently caused by fix for 56053.
fixed in trunk: Checking in src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java,v <-- JPDADebuggerImpl.java new revision: 1.68; previous revision: 1.67 done Checking in src/org/netbeans/modules/debugger/jpda/actions/ContinueActionProvider.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/ContinueActionProvider.java,v <-- ContinueActionProvider.java new revision: 1.5; previous revision: 1.4 done Checking in src/org/netbeans/modules/debugger/jpda/actions/JPDADebuggerActionProvider.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/JPDADebuggerActionProvider.java,v <-- JPDADebuggerActionProvider.java new revision: 1.6; previous revision: 1.5 done Checking in src/org/netbeans/modules/debugger/jpda/actions/PauseActionProvider.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/PauseActionProvider.java,v <-- PauseActionProvider.java new revision: 1.6; previous revision: 1.5 done Checking in src/org/netbeans/modules/debugger/jpda/actions/StepActionProvider.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/StepActionProvider.java,v <-- StepActionProvider.java new revision: 1.14; previous revision: 1.13 done Checking in src/org/netbeans/modules/debugger/jpda/actions/StepIntoActionProvider.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/StepIntoActionProvider.java,v <-- StepIntoActionProvider.java new revision: 1.10; previous revision: 1.9 done
Diff to review: Index: src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java =================================================================== RCS file: /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java,v retrieving revision 1.64.2.2 diff -r1.64.2.2 JPDADebuggerImpl.java 85d84 < import org.openide.util.RequestProcessor; 93c92 < public class JPDADebuggerImpl extends JPDADebugger implements Runnable { --- > public class JPDADebuggerImpl extends JPDADebugger { 580d578 < RequestProcessor.getDefault ().post (this, 200); 716a715 > JPDAThreadImpl t = (JPDAThreadImpl) getCurrentThread (); 877,889d875 < } < < public void run () { < if (getState () == JPDADebugger.STATE_DISCONNECTED) < return; < JPDAThreadImpl t = (JPDAThreadImpl) getCurrentThread (); < if (t != null) { < if ( t.getThreadReference ().isSuspended () && < getState () == STATE_RUNNING < ) < setState (STATE_STOPPED); < } < RequestProcessor.getDefault ().post (this, 200); cvs server: Diffing src/org/netbeans/modules/debugger/jpda/actions Index: src/org/netbeans/modules/debugger/jpda/actions/ContinueActionProvider.java =================================================================== RCS file: /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/ContinueActionProvider.java,v retrieving revision 1.3.38.1 diff -r1.3.38.1 ContinueActionProvider.java 21a22 > import java.util.Map; 41c42,45 < public ContinueActionProvider (ContextProvider lookupProvider) { --- > private boolean j2meDebugger = false; > > > public ContinueActionProvider (ContextProvider contextProvider) { 43c47 < (JPDADebuggerImpl) lookupProvider.lookupFirst --- > (JPDADebuggerImpl) contextProvider.lookupFirst 45a50,52 > Map properties = (Map) contextProvider.lookupFirst (null, Map.class); > if (properties != null) > j2meDebugger = properties.containsKey ("J2ME_DEBUGGER"); 57a65,71 > if (j2meDebugger) { > setEnabled ( > ActionsManager.ACTION_CONTINUE, > debuggerState == JPDADebugger.STATE_STOPPED > ); > return; > } Index: src/org/netbeans/modules/debugger/jpda/actions/JPDADebuggerActionProvider.java =================================================================== RCS file: /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/JPDADebuggerActionProvider.java,v retrieving revision 1.4.4.1 diff -r1.4.4.1 JPDADebuggerActionProvider.java 15a16 > import com.sun.jdi.ThreadReference; 20a22 > import com.sun.jdi.request.StepRequest; 63,67c65,67 < < /** < * Removes last step request. < */ < void removeStepRequests () { --- > > void removeStepRequests (ThreadReference tr) { > //S ystem.out.println ("removeStepRequests"); 73,76c73,81 < if (verbose) { < Iterator it = l.iterator (); < while (it.hasNext ()) < System.out.println(" remove request " + it.next ()); --- > Iterator it = l.iterator (); > while (it.hasNext ()) { > StepRequest stepRequest = (StepRequest) it.next (); > if (stepRequest.thread ().equals (tr)) { > //S ystem.out.println(" remove request " + stepRequest); > erm.deleteEventRequest (stepRequest); > break; > } > //S ystem.out.println(" do not remove " + stepRequest + " : " + stepRequest.thread ()); 78,79d82 < < erm.deleteEventRequests (l); Index: src/org/netbeans/modules/debugger/jpda/actions/PauseActionProvider.java =================================================================== RCS file: /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/PauseActionProvider.java,v retrieving revision 1.3.38.1 diff -r1.3.38.1 PauseActionProvider.java 20a21 > import java.util.Map; 41c42,45 < public PauseActionProvider (ContextProvider lookupProvider) { --- > private boolean j2meDebugger = false; > > > public PauseActionProvider (ContextProvider contextProvider) { 43c47 < (JPDADebuggerImpl) lookupProvider.lookupFirst --- > (JPDADebuggerImpl) contextProvider.lookupFirst 45a50,52 > Map properties = (Map) contextProvider.lookupFirst (null, Map.class); > if (properties != null) > j2meDebugger = properties.containsKey ("J2ME_DEBUGGER"); 57a65,71 > if (j2meDebugger) { > setEnabled ( > ActionsManager.ACTION_PAUSE, > debuggerState == JPDADebugger.STATE_RUNNING > ); > return; > } Index: src/org/netbeans/modules/debugger/jpda/actions/StepActionProvider.java =================================================================== RCS file: /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/StepActionProvider.java,v retrieving revision 1.12.2.1 diff -r1.12.2.1 StepActionProvider.java 19a20 > import com.sun.jdi.VirtualMachine; 110,112d110 < // 1) remove old request < removeStepRequests (); < 114c112,113 < // 2) init info about current state --- > // 1) init info about current state & remove old > // requests in the current thread 116a116 > removeStepRequests (tr); 124c124,125 < // 3) create new step request --- > > // 2) create new step request 138c139 < // 4) resume JVM --- > // 3) resume JVM 143c144 < //S ystem.out.println("/nStepAction.do end"); --- > //S ystem.out.println("/nStepAction.doAction end"); 166a168 > System.out.println("/nStepAction.exec"); 169c171 < removeStepRequests (); --- > removeStepRequests (((LocatableEvent) ev).thread ()); 177c179,189 < // 3) stop execution here? --- > // 3) ignore step events in not current threads > JPDAThreadImpl ct = (JPDAThreadImpl) getDebuggerImpl (). > getCurrentThread (); > if (ct != null && > !ct.getThreadReference ().equals (tr) > ) { > // step finished in different thread => ignore > return true; // resume debugging > } > > // 4) stop execution here? 188a201 > System.out.println("/nStepAction.exec end - do not resume"); 198a212 > System.out.println("/nStepAction.exec end - resume"); 200d213 < Index: src/org/netbeans/modules/debugger/jpda/actions/StepIntoActionProvider.java =================================================================== RCS file: /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/StepIntoActionProvider.java,v retrieving revision 1.9 diff -r1.9 StepIntoActionProvider.java 117c117,119 < removeStepRequests (); --- > ThreadReference tr = ((JPDAThreadImpl) getDebuggerImpl (). > getCurrentThread ()).getThreadReference (); > removeStepRequests (tr); 135c137,139 < removeStepRequests (); --- > ThreadReference tr = ((JPDAThreadImpl) getDebuggerImpl (). > getCurrentThread ()).getThreadReference (); > removeStepRequests (tr); 160c164 < removeStepRequests (); --- > removeStepRequests (le.thread ()); 199,200c203,204 < void removeStepRequests () { < super.removeStepRequests (); --- > void removeStepRequests (ThreadReference tr) { > super.removeStepRequests (tr); 207d210 < removeStepRequests (); 209a213 > removeStepRequests (tr);
I need QA review and Dev review here!
Created attachment 21893 [details] Latest diff (together with 58348)
latest fix looks ok in rc41. It doesn't step into unexisting sources in j2me projects. Marking as verified, set TM=4.1 when it's fixed in release41 branch, thanks.
The diff (together with #58348) looks good to me. Reviewed.
Seems to be OK.
fixed in release41 branch: Checking in viewmodel/src/org/netbeans/modules/viewmodel/TreeTable.java; /cvs/debuggercore/viewmodel/src/org/netbeans/modules/viewmodel/TreeTable.java,v <-- TreeTable.java new revision: 1.15.2.1; previous revision: 1.15 done Checking in src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/JPDADebuggerImpl.java,v <-- JPDADebuggerImpl.java new revision: 1.64.2.3; previous revision: 1.64.2.2 done Checking in src/org/netbeans/modules/debugger/jpda/actions/ContinueActionProvider.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/ContinueActionProvider.java,v <-- ContinueActionProvider.java new revision: 1.3.38.2; previous revision: 1.3.38.1 done Checking in src/org/netbeans/modules/debugger/jpda/actions/PauseActionProvider.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/actions/PauseActionProvider.java,v <-- PauseActionProvider.java new revision: 1.3.38.2; previous revision: 1.3.38.1 done Checking in src/org/netbeans/modules/debugger/jpda/expr/Evaluator.java; /cvs/debuggerjpda/src/org/netbeans/modules/debugger/jpda/expr/Evaluator.java,v <-- Evaluator.java new revision: 1.14.6.1; previous revision: 1.14 done