Bug 35842 - Outline view crashes on WinXP & Win2K
Summary: Outline view crashes on WinXP & Win2K
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: SWT (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows XP
: P1 critical (vote)
Target Milestone: 2.1.1   Edit
Assignee: Christophe Cornu CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 31562 35841 37252 (view as bug list)
Depends on:
Blocks:
 
Reported: 2003-03-29 01:50 EST by gavlin CLA
Modified: 2003-05-12 11:11 EDT (History)
2 users (show)

See Also:


Attachments
state before eclipse crash (238.05 KB, image/gif)
2003-04-04 11:19 EST, gavlin CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description gavlin CLA 2003-03-29 01:50:09 EST
I can reproduce this crash consistently.

1. Open specific Java source file with 75 methods
2. Press Ctrl-O 
3. Type first character 'c' of one of the methods
4. CRASH

An unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x773607AB
Function=ImageList_SetOverlayImage+0x68C0
Library=C:\WINDOWS\system32\COMCTL32.dll

Current Java thread:
	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1236)
	at org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:156)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:2839)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:2361)
	at org.eclipse.swt.internal.win32.OS.SendMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:1785)
	at org.eclipse.swt.widgets.Control.setCursor(Control.java:1865)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:63)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:289)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel(AbstractTreeViewer.java:840)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel(AbstractTreeViewer.java:848)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel(AbstractTreeViewer.java:848)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel(AbstractTreeViewer.java:848)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.internalExpandToLevel(AbstractTreeViewer.java:848)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.expandToLevel(AbstractTreeViewer.java:442)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.expandToLevel(AbstractTreeViewer.java:428)
	at
org.eclipse.jface.viewers.AbstractTreeViewer.expandAll(AbstractTreeViewer.java:419)
	at
org.eclipse.jdt.internal.ui.text.JavaOutlineInformationControl$5.modifyText(JavaOutlineInformationControl.java:413)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:183)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:81)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:840)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:865)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:845)
	at org.eclipse.swt.widgets.Text.wmCommandChild(Text.java:1755)
	at org.eclipse.swt.widgets.Control.WM_COMMAND(Control.java:2914)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:2766)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:2361)
	at org.eclipse.swt.internal.win32.OS.CallWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:1236)
	at org.eclipse.swt.widgets.Text.callWindowProc(Text.java:96)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:2839)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:2361)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:1303)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1543)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1402)
	at org.eclipse.ui.internal.Workbench.run(Workbench.java:1385)
	at
org.eclipse.core.internal.boot.InternalBootLoader.run(InternalBootLoader.java:845)
	at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461)
	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:324)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:291)
	at org.eclipse.core.launcher.Main.run(Main.java:747)
	at org.eclipse.core.launcher.Main.main(Main.java:583)

Dynamic libraries:
0x00400000 - 0x00406000 	C:\apps\j2sdk1.4.1_01\bin\javaw.exe
0x77F50000 - 0x77FF7000 	C:\WINDOWS\System32\ntdll.dll
0x77E60000 - 0x77F46000 	C:\WINDOWS\system32\kernel32.dll
0x77DD0000 - 0x77E5D000 	C:\WINDOWS\system32\ADVAPI32.dll
0x78000000 - 0x78086000 	C:\WINDOWS\system32\RPCRT4.dll
0x77D40000 - 0x77DCC000 	C:\WINDOWS\system32\USER32.dll
0x77C70000 - 0x77CB0000 	C:\WINDOWS\system32\GDI32.dll
0x77C10000 - 0x77C63000 	C:\WINDOWS\system32\MSVCRT.dll
0x6D330000 - 0x6D45A000 	C:\apps\j2sdk1.4.1_01\jre\bin\client\jvm.dll
0x76B40000 - 0x76B6C000 	C:\WINDOWS\System32\WINMM.dll
0x6D1D0000 - 0x6D1D7000 	C:\apps\j2sdk1.4.1_01\jre\bin\hpi.dll
0x6D300000 - 0x6D30D000 	C:\apps\j2sdk1.4.1_01\jre\bin\verify.dll
0x6D210000 - 0x6D229000 	C:\apps\j2sdk1.4.1_01\jre\bin\java.dll
0x6D320000 - 0x6D32D000 	C:\apps\j2sdk1.4.1_01\jre\bin\zip.dll
0x132A0000 - 0x132A8000 
C:\Apps\eclipse\plugins\org.eclipse.core.resources.win32_2.1.0\os\win32\x86\core_2_1_0a.dll
0x133C0000 - 0x13407000 
C:\Apps\eclipse\plugins\org.eclipse.swt.win32_2.1.0\os\win32\x86\swt-win32-2133.dll
0x771B0000 - 0x772D1000 	C:\WINDOWS\system32\ole32.dll
0x77340000 - 0x773CB000 	C:\WINDOWS\system32\COMCTL32.dll
0x763B0000 - 0x763F5000 	C:\WINDOWS\system32\comdlg32.dll
0x70A70000 - 0x70AD4000 	C:\WINDOWS\system32\SHLWAPI.dll
0x773D0000 - 0x77BC7000 	C:\WINDOWS\system32\SHELL32.dll
0x77120000 - 0x771AB000 	C:\WINDOWS\system32\OLEAUT32.dll
0x76390000 - 0x763AC000 	C:\WINDOWS\System32\IMM32.dll
0x71950000 - 0x71A34000 
C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.10.0_x-ww_f7fb5805\comctl32.dll
0x5AD70000 - 0x5ADA4000 	C:\WINDOWS\System32\uxtheme.dll
0x74C80000 - 0x74CAC000 	C:\WINDOWS\System32\oleacc.dll
0x55900000 - 0x55961000 	C:\WINDOWS\System32\MSVCP60.dll
0x76380000 - 0x76385000 	C:\WINDOWS\System32\msimg32.dll
0x135C0000 - 0x135C8000 
C:\Apps\eclipse\plugins\com.example.autorefresh.win32_2.0.0\win32refresh.dll
0x76C90000 - 0x76CB2000 	C:\WINDOWS\system32\imagehlp.dll
0x6D510000 - 0x6D58D000 	C:\WINDOWS\system32\DBGHELP.dll
0x77C00000 - 0x77C07000 	C:\WINDOWS\system32\VERSION.dll
0x76BF0000 - 0x76BFB000 	C:\WINDOWS\System32\PSAPI.DLL

Local Time = Fri Mar 28 20:50:25 2003
Elapsed Time = 1979
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.4.1_01-b01 mixed mode)
#
Comment 1 Dirk Baeumer CLA 2003-04-01 11:28:12 EST
Moving to SWT. It seems to happen when calling Control.setCursor
Comment 2 Veronika Irvine CLA 2003-04-01 17:00:56 EST
*** Bug 35841 has been marked as a duplicate of this bug. ***
Comment 3 Christophe Cornu CLA 2003-04-01 17:37:39 EST
Hi,
We are very very interested in tracking this one down.

Which version of Eclipse are you running?
Can you attach the source file?

Thanks,
Chris
Comment 4 gavlin CLA 2003-04-02 06:34:40 EST
I'm running build 200303272130. Unfortunately, I cannot send the source file.
Here's a little more detail.

1. Open the file
2. Ctrl-end to move to the end of the file
3. Page-up 5 (cursor is sitting in another method)
4. Ctrl-o
5. type 'c'
crash

The following does not cause the crash
1. Open the file
2. Ctrl-end to move to the end of the file
3. Scroll w/keyboard to the same cursor location
4. Ctrl-o
5. type 'c'
No crash (go figure)
Comment 5 Christophe Cornu CLA 2003-04-02 14:08:29 EST
I can't reproduce here with a plain 75 methods class file or other large java 
files.

Can you reproduce the crash with a fresh workspace containing only your 
particular java file? I wonder if the state of your workspace also matters or 
if it is just about the structure of your java file.

What is your display driver? (on Win2000, Settings > Control Panel > System > 
Hardware tab > device manager > Display adapters > double click on the adapter 
> Driver.

Thanks,
Chris
Comment 6 Christophe Cornu CLA 2003-04-04 10:04:29 EST
Raising priority to P2.

Ron, Nikolay:
Do you find the crash to occur more frequently on fast or slow machines? Can 
you indicate the CPU frequency you are using?
Does it happen with a different VM ? 

Ron was using HotSpot(TM) Client VM (1.4.1_01-b01 mixed mode)
Nikolay: HotSpot (TM) Client VM (1.4.1_02-b06 mixed mode)

I can reproduce the temporary 'freeze' of the outliner that Nikolay mentionned, 
but not yet the actual crash.
Comment 7 Nikolay Metchev CLA 2003-04-04 10:08:47 EST
Unfortunately I have only produced it on one machine: Intel Pentium 4 (1.7GHz) 
512MB RAM. I think that is a pretty fast machine so I don't belive this bug has 
to do with the spec of the machine. My workspace I would say is approaching 
medium size (about 15 projects). I am using Windows 2000 with all the latest 
patches.
Comment 8 gavlin CLA 2003-04-04 10:10:54 EST
I crash on both a 2Ghz machine with 1Gb memory and a 1Ghz machine with 512Mb
memory. I'm using same VM on both boxes, 1.4.1_01. One box is WinXP SP1 and the
other Win2K.
Comment 9 Christophe Cornu CLA 2003-04-04 10:54:05 EST
Where is your mouse cursor when the crash occurs?
Does it have to be on a particular spot (e.g. over a tree widget: the outliner, 
the package viewer) for the crash to occur?
Can you confirm the outliner does not crash if the mouse cursor is outside of 
Eclipse?
Comment 10 gavlin CLA 2003-04-04 11:19:53 EST
Created attachment 4458 [details]
state before eclipse crash
Comment 11 gavlin CLA 2003-04-04 11:23:47 EST
I can't get Eclipse to crash when my mouse cursor is outside Eclipse. It happens
when the mouse cursor is over the outliner. 
Comment 12 Christophe Cornu CLA 2003-04-04 12:22:38 EST
Ok, I finally reproduced the crash. Mouse cursor was left where the outline 
shell is going to popup.

Making it a P1.
Comment 13 Christophe Cornu CLA 2003-04-04 18:29:53 EST
Note: can be reproduced with different files.
In particular, can use our org.eclipse.swt.widget.Shell file
Add a bunch of public void oapen() {}, public void obpen() {}... public void 
ogpen() {}
Select method setVisible(boolean)
set mouse cursor so that it is where the tree in the outliner will appear.
CTRL-O
Press o. Crash.
One of the pattern is to use the first letter of the package name and make sure 
at least one method also starts with this letter.

Internal note:
- the native tree appears to sometimes crash when we send it a WM_SETCURSOR
Control.setCursor Cursor {65557} from handle 4981502 Shell {Java - Shell.java - 
Eclipse Platform}
 Control handle 4981502 hCursor set to 65557
 GetParent of 5374994: 3081264
 GetParent of 3081264: 3277950
 GetParent of 3277950: 4981502
  WM_SETCURSOR to 5374994
Control WM_SETCURSOR 5374994 control Tree {}5374994
 control.findCursor 0
Control WM_SETCURSOR 5374994 RETURN NULL
WM_SETCURSOR TREE back to the OS handle 5374994
 isVisible true isEnabled true itemCount 3
 bounds 5 30 304 279
Comment 14 Christophe Cornu CLA 2003-04-15 14:01:33 EDT
Fixed version >20030415

Thanks for reporting this.
Comment 15 Christophe Cornu CLA 2003-04-15 14:07:04 EDT
*** Bug 31562 has been marked as a duplicate of this bug. ***
Comment 16 Christophe Cornu CLA 2003-05-06 10:20:32 EDT
*** Bug 37252 has been marked as a duplicate of this bug. ***