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.

Bug 80446 - *Gdb-lite* Debugger Console window
Summary: *Gdb-lite* Debugger Console window
Status: RESOLVED FIXED
Alias: None
Product: cnd
Classification: Unclassified
Component: Debugger (show other bugs)
Version: 5.x
Hardware: All All
: P4 blocker (vote)
Assignee: _ gordonp
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2006-07-18 01:21 UTC by Nikolay Molchanov
Modified: 2009-06-25 10:59 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nikolay Molchanov 2006-07-18 01:21:19 UTC
This is a common IZ for all known problems with "Debugger Console" window
in "cnd" module. So far I see 3 problems. 

----------------------------------------------------------------------------

Problem 1: Contextual menu does not work.
 There are only two items: "Hide Text" (disabled) and "More Info", which is
enabled, but it does not do anything. It is supposed to show additional 
information about selected text in Dynamic Help window.

----------------------------------------------------------------------------

Problem 2: Text field "Command" does not fill the full width.
 This text field should occupy the space between label "Command" and the
right side of the "Debugger Console" window.

----------------------------------------------------------------------------
 
Problem 3: IllegalStateException.
 If "gdb" session cannot start (f.e. "gdb" is not found), "Debugger Console"
window is closed, but there is a an assertion in WindowManagerImpl.java:1136, 
which causes exception:

    // PENDING Just temporary until all 'bad' calls are really put into AWT thread.
    static void assertEventDispatchThreadWeak() {
        if(!SwingUtilities.isEventDispatchThread()) {
            ErrorManager.getDefault().notify(ErrorManager.INFORMATIONAL,
                new IllegalStateException("Assertion failed. " +
ASSERTION_ERROR_MESSAGE)); // NOI18N
        }
    }



INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentIsOpened(WindowManagerImpl.java:1066)
        at org.openide.windows.TopComponent.isOpened(TopComponent.java:326)
        at org.openide.windows.TopComponent.isOpened(TopComponent.java:318)
        at org.openide.windows.TopComponent.close(TopComponent.java:341)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentIsOpened(WindowManagerImpl.java:1066)
        at org.openide.windows.TopComponent.isOpened(TopComponent.java:326)
        at org.openide.windows.TopComponent.isOpened(TopComponent.java:318)
        at org.openide.windows.TopComponent.canClose(TopComponent.java:358)
        at org.openide.windows.TopComponent.close(TopComponent.java:345)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentClose(WindowManagerImpl.java:996)
        at org.openide.windows.TopComponent.close(TopComponent.java:346)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentIsOpened(WindowManagerImpl.java:1066)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentClose(WindowManagerImpl.java:998)
        at org.openide.windows.TopComponent.close(TopComponent.java:346)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentIsOpened(WindowManagerImpl.java:1066)
        at org.openide.windows.TopComponent.isOpened(TopComponent.java:326)
        at org.openide.windows.TopComponent.isOpened(TopComponent.java:318)
        at org.openide.windows.TopComponent.canClose(TopComponent.java:358)
        at
org.netbeans.core.windows.Central.removeModeTopComponent(Central.java:726)
        at org.netbeans.core.windows.ModeImpl.removeTopComponent(ModeImpl.java:336)
        at org.netbeans.core.windows.ModeImpl.close(ModeImpl.java:218)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentClose(WindowManagerImpl.java:1005)
        at org.openide.windows.TopComponent.close(TopComponent.java:346)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentID(WindowManagerImpl.java:1078)
        at
org.openide.windows.WindowManager.findTopComponentID(WindowManager.java:452)
        at
org.netbeans.core.windows.model.TopComponentSubModel.getID(TopComponentSubModel.java:303)
        at
org.netbeans.core.windows.model.TopComponentSubModel.removeTopComponent(TopComponentSubModel.java:193)
        at
org.netbeans.core.windows.model.DefaultModeModel.removeTopComponent(DefaultModeModel.java:101)
        at
org.netbeans.core.windows.model.DefaultModel.removeModeTopComponent(DefaultModel.java:529)
        at
org.netbeans.core.windows.Central.removeModeTopComponent(Central.java:730)
        at org.netbeans.core.windows.ModeImpl.removeTopComponent(ModeImpl.java:336)
        at org.netbeans.core.windows.ModeImpl.close(ModeImpl.java:218)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentClose(WindowManagerImpl.java:1005)
        at org.openide.windows.TopComponent.close(TopComponent.java:346)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentID(WindowManagerImpl.java:1078)
        at
org.openide.windows.WindowManager.findTopComponentID(WindowManager.java:452)
        at
org.netbeans.core.windows.model.TopComponentSubModel.getID(TopComponentSubModel.java:303)
        at
org.netbeans.core.windows.model.TopComponentSubModel.adjustSelectedTopComponent(TopComponentSubModel.java:236)
        at
org.netbeans.core.windows.model.TopComponentSubModel.removeTopComponent(TopComponentSubModel.java:198)
        at
org.netbeans.core.windows.model.DefaultModeModel.removeTopComponent(DefaultModeModel.java:101)
        at
org.netbeans.core.windows.model.DefaultModel.removeModeTopComponent(DefaultModel.java:529)
        at
org.netbeans.core.windows.Central.removeModeTopComponent(Central.java:730)
        at org.netbeans.core.windows.ModeImpl.removeTopComponent(ModeImpl.java:336)
        at org.netbeans.core.windows.ModeImpl.close(ModeImpl.java:218)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentClose(WindowManagerImpl.java:1005)
        at org.openide.windows.TopComponent.close(TopComponent.java:346)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
INFORMATIONAL *********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.IllegalStateException: Assertion failed. WindowsAPI is required to be
called from AWT thread only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThreadWeak(WindowManagerImpl.java:1136)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentID(WindowManagerImpl.java:1078)
        at
org.openide.windows.WindowManager.findTopComponentID(WindowManager.java:452)
        at
org.netbeans.core.windows.Central.removeModeTopComponent(Central.java:731)
        at org.netbeans.core.windows.ModeImpl.removeTopComponent(ModeImpl.java:336)
        at org.netbeans.core.windows.ModeImpl.close(ModeImpl.java:218)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentClose(WindowManagerImpl.java:1005)
        at org.openide.windows.TopComponent.close(TopComponent.java:346)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
        at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)
*********** Exception occurred ************ at 4:41 PM on Jul 17, 2006
java.lang.AssertionError: WindowsAPI is required to be called from AWT thread
only, see
http://www.netbeans.org/download/dev/javadoc/OpenAPIs/org/openide/doc-files/threading.html
        at
org.netbeans.core.windows.WindowManagerImpl.assertEventDispatchThread(WindowManagerImpl.java:1130)
        at
org.netbeans.core.windows.ModeImpl.getSelectedTopComponent(ModeImpl.java:243)
        at
org.netbeans.core.windows.Central.removeModeTopComponent(Central.java:785)
        at org.netbeans.core.windows.ModeImpl.removeTopComponent(ModeImpl.java:336)
        at org.netbeans.core.windows.ModeImpl.close(ModeImpl.java:218)
        at
org.netbeans.core.windows.WindowManagerImpl.topComponentClose(WindowManagerImpl.java:1005)
        at org.openide.windows.TopComponent.close(TopComponent.java:346)
        at org.openide.windows.TopComponent.close(TopComponent.java:333)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyVL.closeDebuggerConsole(GdbProxyVL.java:95)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxyCL.startDebugging(GdbProxyCL.java:175)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbProxy.startDebugging(GdbProxy.java:88)
        at
org.netbeans.modules.cnd.debugger.gdb.GdbDebuggerImpl.startDebugger(GdbDebuggerImpl.java:69)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider.doAction(StartActionsProvider.java:71)
        at
org.netbeans.modules.cnd.debugger.gdb.actions.StartActionsProvider$1.run(StartActionsProvider.java:119)
        at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:493)
[catch] at
org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:926)

----------------------------------------------------------------------------
Comment 1 Nikolay Molchanov 2006-07-18 21:57:44 UTC
Problem 3 is fixed (great thanks to Vladimir Voskresensky for the suggested 
fix!). The suggested fix is to use SwingUtilities.invokeLater() to call
closeDebuggerConsole() from AWT thread.

The fix is integrated in "cnd-nb50-dev" branch.

Tag: cnd-nb50-dev
User: NikMolchanov
Date: 2006/07/18 08:56:12

Modified:
   cnd/gdb/src/org/netbeans/modules/cnd/debugger/gdb/GdbProxyCL.java

Log:
 IZ 80446 *Gdb-lite* Debugger Console window
 Fixed Problem 3:
 - "close console" must be done in AWT thread

File Changes:

Directory: /cnd/gdb/src/org/netbeans/modules/cnd/debugger/gdb/
==============================================================

File [changed]: GdbProxyCL.java
Url:
http://cnd.netbeans.org/source/browse/cnd/gdb/src/org/netbeans/modules/cnd/debugger/gdb/GdbProxyCL.java?r1=1.1.2.33&r2=1.1.2.34
Delta lines:  +8 -4
-------------------
--- GdbProxyCL.java	18 Jul 2006 01:34:39 -0000	1.1.2.33
+++ GdbProxyCL.java	18 Jul 2006 15:56:10 -0000	1.1.2.34
@@ -19,11 +19,11 @@
 
 package org.netbeans.modules.cnd.debugger.gdb;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 import java.util.Vector;
+import javax.swing.SwingUtilities;
 
 import org.openide.DialogDisplayer;
 import org.openide.NotifyDescriptor;
@@ -171,8 +171,12 @@
                 String dir = "/tmp"; // NOI18N
                 gdbProxy.gdbProxyML.executeExternalCommand(cmd, dir, 0);
             }
-            // close console
-            // gdbProxy.gdbProxyVL.closeDebuggerConsole(); // IZ 80446 Problem 3.
+            // close console (must be done in AWT thread)
+            SwingUtilities.invokeLater(new Runnable() {
+                public void run() {
+                    gdbProxy.gdbProxyVL.closeDebuggerConsole();
+                }
+            });
         } else {
             debuggerStatus = STARTING;
         }

----------------------------------------------------------------

Comment 2 Nikolay Molchanov 2006-09-11 07:27:14 UTC
Priority is downgraded to P4 because the most critical problems are fixed.
Comment 3 Nikolay Molchanov 2006-09-11 07:38:47 UTC
For unknown reason this issue got status "New". Changed it back to "Started".
Comment 4 _ gordonp 2007-09-07 20:18:43 UTC
Fixed. Nik fixed problem 3 a long time ago. I removed the context menu, which fixed problem 1. I
also fixed the text field width in problem 2.