JDK-6984540 : closed/java/awt/dnd/DragInterceptorAppletTest/DragInterceptorAppletTest.html test fails
Type:Bug
Component:client-libs
Sub-Component:java.awt
Affected Version:7
Priority:P3
Status:Closed
Resolution:Fixed
OS:windows_xp
CPU:x86
Submitted:2010-09-14
Updated:2011-05-19
Resolved:2011-04-21
The Version table provides details related to the release that this issue/RFE will be addressed.
Unresolved : Release in which this issue/RFE will be addressed. Resolved: Release in which this issue/RFE has been resolved. Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.
closed/java/awt/dnd/DragInterceptorAppletTest/DragInterceptorAppletTest.html test fails
see comments
Comments
SUGGESTED FIX
src/windows/native/sun/windows/awt_Toolkit.cpp
@@ -526,20 +526,20 @@
return FALSE;
}
tk.m_isActive = FALSE;
- awt_dnd_uninitialize();
awt_clipboard_uninitialize((JNIEnv *)JNU_GetEnv(jvm, JNI_VERSION_1_2));
// dispose Direct3D-related resources. This should be done
// before AwtObjectList::Cleanup() as the d3d will attempt to
// shutdown when the last of its windows is disposed of
D3DInitializer::GetInstance().Clean();
AwtObjectList::Cleanup();
AwtFont::Cleanup();
+ awt_dnd_uninitialize();
if (tk.m_inputMethodHWnd != NULL) {
::SendMessage(tk.m_inputMethodHWnd, WM_IME_CONTROL, IMC_OPENSTATUSWINDOW, 0);
}
tk.m_inputMethodHWnd = NULL;
30-03-2011
EVALUATION
The call stack is:
> awt.dll!AwtDropTarget::RegisterTarget(unsigned short show) Line 454 + 0x3 bytes C++
awt.dll!AwtComponent::DestroyDropTarget() Line 5329 C++
awt.dll!AwtComponent::Dispose() Line 302 + 0xa bytes C++
awt.dll!AwtObjectList::Cleanup() Line 110 C++
awt.dll!AwtToolkit::Dispose() Line 540 C++
awt.dll!Java_sun_awt_windows_WToolkit_eventLoop(JNIEnv_ * env, _jobject * self) Line 2189 C++
009c9ba7()
So by the time we are cleanin the object list up OLE has already been uninitialized. Should defer the awt_dnd_uninitialize() call to the later time.
30-03-2011
EVALUATION
Looks like the issue does not related to the problem that verifies the regression test. I found that the test log does not contain any useful message from the child vm. Theefor I loooked into test directory and found a crash log.
the important part of the log is
C [awt.dll+0x91791]
C [awt.dll+0x66e71]
according to jdk7 build 106 map file the problem might occur in
DoGetData@AwtDropTarget@@UAEPAV_jobject@@_J@Z 100917b1
DestroyDropTarget@AwtComponent@@UAEXXZ 10066e60
But that does not seem true because DestroyDropTarget does not invoke DoGetData().
It might be that 0x66e71 is sone unnamed adress. So the problem should be investigated with debugger.
02-03-2011
EVALUATION
At least it could be reproducible. The problem should be investigated.
15-09-2010
EVALUATION
Currently, I cannot reproduce the problem with jdk 7 build 109.