Bug 321554 - 'Cannot get count' Error in Menu.getItems()
Summary: 'Cannot get count' Error in Menu.getItems()
Status: RESOLVED NOT_ECLIPSE
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 3.5.1   Edit
Hardware: PC Windows XP
: P3 normal with 1 vote (vote)
Target Milestone: ---   Edit
Assignee: Platform-SWT-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: needinfo
: 333628 376150 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-08-03 03:32 EDT by t.ushiro CLA
Modified: 2017-06-15 07:54 EDT (History)
12 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description t.ushiro CLA 2010-08-03 03:32:53 EDT
"Bug 123099" does not believe that addresses the same issue .

Caused by: java.lang.NegativeArraySizeException
    at org.eclipse.swt.widgets.Menu.getItems(Menu.java:859)
    at org.eclipse.swt.widgets.Menu.releaseChildren(Menu.java:1134)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
    at org.eclipse.swt.widgets.Widget.dispose(Widget.java:441)
    at org.eclipse.swt.widgets.Control.releaseWidget(Control.java:2243)
    at org.eclipse.swt.widgets.Composite.releaseWidget(Composite.java:763)
    at org.eclipse.swt.widgets.Table.releaseWidget(Table.java:2871)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:816)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:756)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:756)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:756)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:756)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
    at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:756)
    at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
    at org.eclipse.swt.widgets.Widget.dispose(Widget.java:441)

    ... 15 more
Comment 1 Remy Suen CLA 2010-08-03 09:23:04 EDT
Does this occur on 3.6? How can this exception be reproduced?
Comment 2 t.ushiro CLA 2010-08-03 20:40:37 EDT
(In reply to comment #1)
> Does this occur on 3.6? How can this exception be reproduced?

No, this error, "swt3.5.1.v3555a" occurred.

I'm troubled that we have no way to reproduce it.

However, the error has occurred, it is true that I posted.
Comment 3 t.ushiro CLA 2010-08-03 20:47:49 EDT
(In reply to comment #1)
> Does this occur on 3.6? How can this exception be reproduced?

No, this error, "swt3.5.1.v3555a" occurred.

I'm troubled that we have no way to reproduce it.

However, the error has occurred, it is true that I posted.
Comment 4 Missing name CLA 2011-01-25 15:40:21 EST
I have the same bug. This causes that no menu is accessible and it's impossible to close eclipse.

The only way is to kill the process.

Stack trace : 

!ENTRY org.eclipse.ui 4 0 2011-01-25 21:32:53.790
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTError: Cannot get the enabled state
	at org.eclipse.swt.SWT.error(SWT.java:4109)
	at org.eclipse.swt.SWT.error(SWT.java:3998)
	at org.eclipse.swt.SWT.error(SWT.java:3969)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
	at org.eclipse.swt.widgets.MenuItem.getEnabled(MenuItem.java:418)
	at org.eclipse.swt.widgets.MenuItem.isEnabled(MenuItem.java:504)
	at org.eclipse.swt.widgets.Control.WM_COMMAND(Control.java:4289)
	at org.eclipse.swt.widgets.Shell.WM_COMMAND(Shell.java:2160)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4163)


!ENTRY org.eclipse.ui 4 0 2011-01-25 21:32:53.796
!MESSAGE Error occurred during status handling
!STACK 0
org.eclipse.swt.SWTError: Cannot set text
	at org.eclipse.swt.SWT.error(SWT.java:4109)
	at org.eclipse.swt.SWT.error(SWT.java:3998)
	at org.eclipse.swt.SWT.error(SWT.java:3969)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
	at org.eclipse.swt.widgets.MenuItem.setText(MenuItem.java:1083)
	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:909)
	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:876)
	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:876)
	at org.eclipse.ui.internal.Workbench.updateActiveWorkbenchWindowMenuManager(Workbench.java:3278)
	at org.eclipse.ui.internal.Workbench.access$0(Workbench.java:3238)


!ENTRY org.eclipse.ui 4 0 2011-01-25 21:35:36.674
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.swt.SWTError: Cannot set text
	at org.eclipse.swt.SWT.error(SWT.java:4109)
	at org.eclipse.swt.SWT.error(SWT.java:3998)
	at org.eclipse.swt.SWT.error(SWT.java:3969)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:468)
	at org.eclipse.swt.widgets.MenuItem.setText(MenuItem.java:1083)

!ENTRY org.eclipse.ui 4 0 2011-01-25 21:35:39.696
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.StackOverflowError
	at org.eclipse.jface.action.ContributionManager.getItems(ContributionManager.java:208)
	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:873)
	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:876)
	at org.eclipse.jface.action.MenuManager.update(MenuManager.java:876)
	at org.eclipse.ui.internal.Workbench.updateActiveWorkbenchWindowMenuManager(Workbench.java:3278)
	at org.eclipse.ui.internal.Workbench.access$0(Workbench.java:3238)
Comment 5 Hannes Erven CLA 2011-03-07 11:16:47 EST
One of my users experienced this error today on 3.6, but I could not yet find a way reproduce it.
The affected menu is a right-click context menu ("popup") that consists of a bunch of <objectContribution> items and one sub-group. The sub-group was show correctly, but the main elements had disappeared.

There's the "NegativeArraySizeException" in the log, immediately followed by "Widget disposed too early" (WorkbenchpartReference.java:172).


Here's the log entries:

!ENTRY org.eclipse.ui 4 0 2011-03-07 15:54:53.740

!MESSAGE Es wurde eine unerwartete Ausnahmebedingung ausgelöst.

!STACK 0

java.lang.NegativeArraySizeException

	at org.eclipse.swt.widgets.Menu.getItems(Menu.java:861)

	at org.eclipse.swt.widgets.Menu.releaseChildren(Menu.java:1136)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.MenuItem.releaseChildren(MenuItem.java:509)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Menu.releaseChildren(Menu.java:1143)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)

	at org.eclipse.swt.widgets.Control.releaseWidget(Control.java:2278)

	at org.eclipse.swt.widgets.Composite.releaseWidget(Composite.java:879)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:820)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)

	at org.eclipse.ui.internal.PartPane.dispose(PartPane.java:180)

	at org.eclipse.ui.internal.ViewPane.dispose(ViewPane.java:193)

	at org.eclipse.ui.internal.WorkbenchPartReference.dispose(WorkbenchPartReference.java:681)

	at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1721)

	at org.eclipse.ui.internal.WorkbenchPage.partRemoved(WorkbenchPage.java:1713)

	at org.eclipse.ui.internal.ViewFactory.releaseView(ViewFactory.java:257)

	at org.eclipse.ui.internal.Perspective.dispose(Perspective.java:292)

	at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1792)

	at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:861)

	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1696)

	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:734)

	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710)

	at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:826)

	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:824)

	at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)

	at org.eclipse.ui.internal.Workbench$18.run(Workbench.java:1106)

	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1103)

	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1032)

	at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1276)

	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1274)

	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1246)

	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:731)

	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710)

	at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:826)

	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:824)

	at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741)

	at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687)

	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:98)

	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)

	at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308)

	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1665)

	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4162)

	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)

	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)

	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)

	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)

	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)

	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)

	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)

	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)

	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)

	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)

	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)

	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)

	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)

	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)

	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)

	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)

	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)

	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)

	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)

	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)

	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)

	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)

	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)

	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)

	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)

	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)

	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)

	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)

	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)

[...]




!ENTRY org.eclipse.ui.workbench 4 0 2011-03-07 15:54:53.755

!MESSAGE Widget disposed too early!

!STACK 0

java.lang.RuntimeException: Widget disposed too early!

	at org.eclipse.ui.internal.WorkbenchPartReference$1.widgetDisposed(WorkbenchPartReference.java:172)

	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:123)

	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1058)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:808)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:872)

	at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)

	at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:773)

	at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1267)

	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)

	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)

	at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:447)

	at org.eclipse.swt.widgets.Shell.dispose(Shell.java:714)

	at org.eclipse.jface.window.Window.close(Window.java:335)

	at org.eclipse.jface.window.ApplicationWindow.close(ApplicationWindow.java:307)

	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1735)

	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:734)

	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710)

	at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:826)

	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:824)

	at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)

	at org.eclipse.ui.internal.Workbench$18.run(Workbench.java:1106)

	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)

	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1103)

	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1032)

	at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1276)

	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1274)

	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1246)

	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:731)

	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:710)

	at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:826)

	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)

	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:824)

	at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741)

	at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687)

	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:98)

	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)

	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)

	at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:308)

	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1665)

	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4162)

	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)

	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)

	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)

	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)

	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)

	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)

	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)

	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)

	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)

	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)

	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)

	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)

	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)

	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2454)

	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:497)

	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4251)

	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)

	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1598)

	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2038)

	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)

	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)

	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)

	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)

	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)

	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)

	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)

	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)

	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)

	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)

	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
Comment 6 Gregor Rosenauer CLA 2011-05-20 05:34:30 EDT
Also got this several times on Ubuntu 11.04 / x64 / Eclipse 3.6.2:
(is it an issue with SWT under GTK+ maybe? never saw this before)

!ENTRY org.eclipse.ui 4 0 2011-05-20 10:40:10.276
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NegativeArraySizeException
        at org.eclipse.swt.widgets.Menu.getItems(Menu.java:474)
        at org.eclipse.jface.action.MenuManager.getMenuItems(MenuManager.java:689)
        at org.eclipse.jface.action.MenuManager.update(MenuManager.java:778)
        at org.eclipse.jface.action.MenuManager.handleAboutToShow(MenuManager.java:470)
        at org.eclipse.jface.action.MenuManager.access$1(MenuManager.java:465)
        at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:491)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:241)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1263)
        at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:199)
        at org.eclipse.swt.widgets.Display.runPopups(Display.java:3581)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3158)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
Comment 7 Anthony CLA 2011-09-19 14:50:40 EDT
(In reply to comment #6)
> Also got this several times on Ubuntu 11.04 / x64 / Eclipse 3.6.2:
> (is it an issue with SWT under GTK+ maybe? never saw this before)

I have experienced the issue as well on Ubuntu 11.04 / x64 / Eclipse 3.6.2, 3.7.0, and 3.7.1 M20110810-0800.  I do agree that this is likely an issue with SWT under GTK+.  In my attempts to diagnose the issue, I was able to trace the problem down to getItemCount() in org.eclipse.swt.widgets.Menu.  When the right click menu is working properly, OS.gtk_container_get_children (handle) returns the correct number of children, but after the bug has occurred, this call returns 0 (which causes _setVisible to immediately sendEvent(SWT.Hide), which results in the context menu not being shown) and a number of exceptions occur at shutdown when the widgets are disposed as well.  In my particular case, the issue occurs most frequently when the Outline view is open, the current document has nothing for Outline view to show (it's an XML document that is not in the workspace so Outline view shows "An outline is not available."), and the action selected in the context menu modifies the currently-visible document.  For the record, my GTK+ version is 2.2.4.4-0ubuntu2.  After the context menu issue occurs, the shutdown typically gets errors: 
!ENTRY org.eclipse.ui.workbench 4 0 2011-09-16 18:14:44.113
!MESSAGE Widget disposed too early for part org.eclipse.ui.views.ContentOutline
!STACK 0
java.lang.RuntimeException: Widget disposed too early for part org.eclipse.ui.views.ContentOutline
	at org.eclipse.ui.internal.WorkbenchPartReference$1.widgetDisposed(WorkbenchPartReference.java:171)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:123)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1282)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1263)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1080)
	at org.eclipse.swt.widgets.Control.release(Control.java:3488)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1294)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1083)
	at org.eclipse.swt.widgets.Control.release(Control.java:3488)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1294)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1083)
	at org.eclipse.swt.widgets.Control.release(Control.java:3488)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:1294)
	at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:208)
	at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:469)
	at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:2370)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1083)
	at org.eclipse.swt.widgets.Control.release(Control.java:3488)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:462)
	at org.eclipse.swt.widgets.Shell.dispose(Shell.java:2306)
	at org.eclipse.jface.window.Window.close(Window.java:335)
	at org.eclipse.jface.window.ApplicationWindow.close(ApplicationWindow.java:307)
	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1761)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:730)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
	at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:860)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:858)
	at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
	at org.eclipse.ui.internal.Workbench$18.run(Workbench.java:1109)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1106)
	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1035)
	at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1279)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1277)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1249)
	at org.eclipse.ui.internal.handlers.QuitHandler.execute(QuitHandler.java:41)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:157)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)

!ENTRY org.eclipse.ui.workbench 4 2 2011-09-16 18:14:44.168
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.ui.workbench".
!STACK 0
java.lang.NullPointerException
	at org.eclipse.swt.widgets.MenuItem.getAccelGroup(MenuItem.java:316)
	at org.eclipse.swt.widgets.MenuItem.releaseWidget(MenuItem.java:511)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:1089)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:462)
	at org.eclipse.jface.action.ActionContributionItem.dispose(ActionContributionItem.java:1191)
	at org.eclipse.jface.action.MenuManager.dispose(MenuManager.java:237)
	at org.eclipse.ui.internal.PartSite.dispose(PartSite.java:203)
	at org.eclipse.ui.internal.ViewReference.doDisposePart(ViewReference.java:130)
	at org.eclipse.ui.internal.WorkbenchPartReference.dispose(WorkbenchPartReference.java:684)
	at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1797)
	at org.eclipse.ui.internal.WorkbenchPage.partRemoved(WorkbenchPage.java:1789)
	at org.eclipse.ui.internal.ViewFactory.releaseView(ViewFactory.java:257)
	at org.eclipse.ui.internal.Perspective.disposeViewRefs(Perspective.java:321)
	at org.eclipse.ui.internal.Perspective.dispose(Perspective.java:280)
	at org.eclipse.ui.internal.WorkbenchPage.dispose(WorkbenchPage.java:1868)
	at org.eclipse.ui.internal.WorkbenchWindow.closeAllPages(WorkbenchWindow.java:887)
	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1722)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:730)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:715)
	at org.eclipse.ui.internal.WorkbenchWindow$5.run(WorkbenchWindow.java:860)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:858)
	at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
	at org.eclipse.ui.internal.Workbench$18.run(Workbench.java:1109)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1106)
	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1035)
	at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1279)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1277)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1249)
	at org.eclipse.ui.internal.handlers.QuitHandler.execute(QuitHandler.java:41)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.internal.actions.CommandAction.runWithEvent(CommandAction.java:157)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:616)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 8 Anthony CLA 2011-11-10 16:07:40 EST
As an addendum, I have confirmed this issue in 3.7.1 and 3.8M3 on Ubuntu x86_64.  The proximal cause for the exception is the following code in getItems:
public MenuItem [] getItems () {
	checkWidget();
	long /*int*/ list = OS.gtk_container_get_children (handle);
	if (list == 0) return new MenuItem [0];
	int count = OS.g_list_length (list);
	if (imSeparator != 0) count--;
	if (imItem != 0) count--;
	MenuItem [] items = new MenuItem [count];

OS.g_list_length (list) returns a count of 1 for the given handle which, after the next two statements, becomes -1 since neither is == to 0, which causes the NegativeArraySizeException.  In my debugging session, before the error occurs, the Menu item I am attempting to show has a number of children.  After the issue occurs, the Menu item is empty (the toString representation in the variables window shows Menu{}).  This also causes getItemCount to return 0 since there are no children, which results in the context menu not showing.  I have not been able to determine what happens to the Menu object to cause this issue, but the following steps will frequently, but not consistently, reproduce this:

Preconditions:
1)  Use a view with a context menu option that modifies the contents of an object
2)  Open the outline view
3)  Open the document that will be modified

Steps:
1)  Run the context menu option that modifies the contents of the object
2)  Click in the editor window for the modified object
3)  Click Yes when asked to reload document
4)  Click in Outline view without clicking anywhere else
5)  Right click in the view with the aforementioned context menu option

Postconditions: (One or more of the following)
1)  Context menu is no longer active (although on occasion it can be restored via actions in another view, closing Outline view, performing actions inside the modified document, or closing the editor window of the modified document)
2)  When Eclipse closes, there may be a number of log messages such as "Widget disposed too early" and NegativeArraySizeException.
3)  On occasion, all pointer actions are consumed so left and right click actions do not work within Eclipse or without and these cannot be recovered unless another TTY is selected and the Eclipse process is terminated.
4)  The context menu is replaced with or has additional entries from a different menu (frequently the IME menu...also, the project browser context menu is sometimes replaced with items such as "Link Source")
5)  If restart is requested (instead of quit), TerminateAndRelaunch fails with a NullPointerException:
!ENTRY org.eclipse.ui 4 4 2011-11-10 15:01:28.191
!MESSAGE Failed to dispose handler for org.eclipse.debug.ui.commands.TerminateAndRelaunch

!ENTRY org.eclipse.ui 4 4 2011-11-10 15:01:28.191
!MESSAGE Failed to dispose handler for org.eclipse.debug.ui.commands.TerminateAndRelaunch
!STACK 0
java.lang.NullPointerException
        at org.eclipse.debug.internal.ui.commands.actions.DebugActionHandler.getDelegate(DebugActionHandler.java:48)
        at org.eclipse.debug.internal.ui.commands.actions.DebugActionHandler.removeHandlerListener(DebugActionHandler.java:112)
        at org.eclipse.ui.internal.handlers.HandlerProxy.dispose(HandlerProxy.java:271)
        at org.eclipse.ui.internal.handlers.HandlerPersistence.clearActivations(HandlerPersistence.java:110)
        at org.eclipse.ui.internal.handlers.HandlerPersistence.dispose(HandlerPersistence.java:125)
        at org.eclipse.ui.internal.handlers.HandlerService.dispose(HandlerService.java:163)
        at org.eclipse.ui.internal.services.ServiceLocator.dispose(ServiceLocator.java:142)
        at org.eclipse.ui.internal.Workbench.shutdown(Workbench.java:3057)
        at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:1123)
        at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:1040)
        at org.eclipse.ui.internal.Workbench$25.run(Workbench.java:1284)
        at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
        at org.eclipse.ui.internal.Workbench.close(Workbench.java:1282)
        at org.eclipse.ui.internal.Workbench.restart(Workbench.java:2292)
        at org.eclipse.ui.internal.handlers.RestartWorkbenchHandler.execute(RestartWorkbenchHandler.java:31)
        at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
        at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
        at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
        at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
        at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
        at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:829)
        at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:815)
        at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:805)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:352)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:601)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:624)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:579)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1431)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1407)


(In reply to comment #7)
Comment 9 Felipe Heidrich CLA 2011-11-21 11:19:04 EST
(In reply to comment #8)
> As an addendum, I have confirmed this issue in 3.7.1 and 3.8M3 on Ubuntu
> x86_64.  The proximal cause for the exception is the following code in
> getItems:
> public MenuItem [] getItems () {
>     checkWidget();
>     long /*int*/ list = OS.gtk_container_get_children (handle);
>     if (list == 0) return new MenuItem [0];
>     int count = OS.g_list_length (list);
>     if (imSeparator != 0) count--;
>     if (imItem != 0) count--;
>     MenuItem [] items = new MenuItem [count];

Anthony, please note that this bug was report against Windows. This code above is Linux-only. Could you please this discussion to Bug 364313.

That said, note that if imSeparator and imItem exist then they should be children of handle. If that is not always true, then it indicates that:
- imSeparator and imItem are being created and not added to handle
- imSeparator and imItem are being deleted and not set to null
- all children are being deleted and imSeparator and imItem not set to null
Comment 10 Silenio Quarti CLA 2012-04-05 11:34:32 EDT
*** Bug 376150 has been marked as a duplicate of this bug. ***
Comment 11 Thomas Singer CLA 2012-11-23 13:05:09 EST
Another related stacktrace (SWT 3.8M2):

org.eclipse.swt.SWTError: Cannot get count [GetLastError=0x0]
	at org.eclipse.swt.SWT.error(SWT.java:4387)
	at org.eclipse.swt.widgets.Menu.getItems(Menu.java:873)
	at org.eclipse.swt.widgets.Menu.releaseChildren(Menu.java:1168)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)
	at org.eclipse.swt.widgets.Control.releaseWidget(Control.java:2430)
	at org.eclipse.swt.widgets.Composite.releaseWidget(Composite.java:880)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:820)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:873)
	at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)
	at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:790)
	at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1290)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:811)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:446)
	at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:448)
	at org.eclipse.swt.widgets.Shell.dispose(Shell.java:715)

The application has been running for more than 5 days.
java.runtime.version                    : "1.7.0_02-b13"
os.arch                                 : "x86"
os.name                                 : "Windows 7"
os.version                              : "6.1"
Comment 12 Grant Gayed CLA 2013-06-27 10:27:56 EDT
*** Bug 333628 has been marked as a duplicate of this bug. ***
Comment 13 Thomas Singer CLA 2014-08-08 09:51:08 EDT
We've got a report with following exception using SWT 4.4.0:

org.eclipse.swt.SWTError: Cannot get count [GetLastError=0x0]
	at org.eclipse.swt.SWT.error(SWT.java:4423)
	at org.eclipse.swt.widgets.Menu.getItems(Menu.java:873)
	at org.eclipse.swt.widgets.Menu.releaseChildren(Menu.java:1168)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:450)
	at smartgit.RQ.handleEvent(SourceFile:1443)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1057)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1081)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:812)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:875)
	at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:166)
	at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:790)
	at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1290)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:450)
	at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:448)
	at org.eclipse.swt.widgets.Shell.dispose(Shell.java:715)

a short time later, following exception is logged:

org.eclipse.swt.SWTError: Cannot get count [GetLastError=0x579]
	at org.eclipse.swt.SWT.error(SWT.java:4423)
	at org.eclipse.swt.widgets.Menu.getItems(Menu.java:873)
	at org.eclipse.swt.widgets.Menu.releaseChildren(Menu.java:1168)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:450)
	at org.eclipse.swt.widgets.Decorations.releaseChildren(Decorations.java:795)
	at org.eclipse.swt.widgets.Shell.releaseChildren(Shell.java:1290)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:815)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:450)
	at org.eclipse.swt.widgets.Decorations.dispose(Decorations.java:448)
	at org.eclipse.swt.widgets.Shell.dispose(Shell.java:715)
	at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:310)
	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1697)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4613)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1627)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2075)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2544)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:498)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4706)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1627)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2075)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2544)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:498)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4706)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:340)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1627)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2075)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4977)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2549)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3757)
Comment 14 Thomas Singer CLA 2014-08-08 09:51:58 EDT
Sorry, it was for SWT 4.3.1.
Comment 15 Niraj Modi CLA 2014-08-12 07:51:29 EDT
For Windows Desktop:
NegativeArraySizeException issue is already fixed in bug 376150, via below patch:
http://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?id=31cb89b02b5dd4f6edf6e9fd65ce9f2e59fabcb6

For Ubuntu:
There is bug 364313 for NegativeArraySizeException

SWT throws "Cannot get count" error only when underlying Windows API call fails and returns a negative item count value, refer:
http://msdn.microsoft.com/en-us/library/windows/desktop/ms647978%28v=vs.85%29.aspx

With the current investigation this issue is in Windows API and is a "NOT_ECLIPSE" bug.
Comment 16 Niraj Modi CLA 2014-08-12 08:09:40 EDT
Marking as "NOT_ECLIPSE".
Please, reopen if you have a valid test case to reproduce this issue.
Comment 17 Thomas Singer CLA 2017-06-15 07:54:36 EDT
Are you sure that the handle is really valid, e.g. checked after creating?