JDK-6603284 : TextArea strees test leaks
  • Type: Bug
  • Component: client-libs
  • Sub-Component: java.awt
  • Affected Version: 5.0u14
  • Priority: P1
  • Status: Closed
  • Resolution: Cannot Reproduce
  • OS: windows
  • CPU: x86
  • Submitted: 2007-09-11
  • Updated: 2011-01-25
  • Resolved: 2008-04-01
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.

To download the current JDK release, click here.
Other
5.0u14Resolved
Related Reports
Relates :  
Relates :  
Description
textArea stress test either crashed or freze after couple of hours.
Prior to the fix for 6480378 the test crashed, usually within several minutes of run. After the fix it no longer crashes, but a memory (and/or GDI objects) leak is observed.

Comments
SUGGESTED FIX ------- osThread_win32.hpp ------- *** /tmp/sccs.VFaau6 Tue Nov 13 05:13:48 2007 --- src/os/win32/vm/osThread_win32.hpp Fri Nov 9 09:34:20 2007 *************** *** 1,46 **** #ifdef USE_PRAGMA_IDENT_HDR ! #pragma ident "@(#)osThread_win32.hpp 1.25 05/03/01 20:02:03 JVM" #endif /* ! * @(#)osThread_win32.hpp 1.25 05/03/01 * * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ typedef void* HANDLE; private: // Win32-specific thread information HANDLE _thread_handle; // Win32 thread handle unsigned long _thread_id; // Win32 thread id HANDLE _interrupt_event; // Event signalled on thread interrupt ThreadState _last_state; public: // The following will only apply in the Win32 implementation, and should only // be visible in the concrete class, not this which should be an abstract base class HANDLE thread_handle() const { return _thread_handle; } void set_thread_handle(HANDLE handle) { _thread_handle = handle; } HANDLE interrupt_event() const { return _interrupt_event; } ! void set_interrupt_event(HANDLE interrupt_event) { _interrupt_event = interrupt_event; } unsigned long thread_id() const { return _thread_id; } #ifndef PRODUCT // Used for debugging, return a unique integer for each thread. int thread_identifier() const { return _thread_id; } #endif #ifdef ASSERT // We expect no reposition failures so kill vm if we get one // bool valid_reposition_failure() { return false; } #endif // ASSERT void set_thread_id(unsigned long thread_id) { _thread_id = thread_id; } bool is_try_mutex_enter() { return false; } // This is a temporary fix for the thread states during // suspend/resume until we throw away OSThread completely. // NEEDS_CLEANUP --- 1,52 ---- #ifdef USE_PRAGMA_IDENT_HDR ! #pragma ident "@(#)osThread_win32.hpp 1.26 07/11/09 09:34:20 JVM" #endif /* ! * @(#)osThread_win32.hpp 1.26 07/11/09 * * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ typedef void* HANDLE; private: // Win32-specific thread information HANDLE _thread_handle; // Win32 thread handle unsigned long _thread_id; // Win32 thread id HANDLE _interrupt_event; // Event signalled on thread interrupt ThreadState _last_state; public: // The following will only apply in the Win32 implementation, and should only // be visible in the concrete class, not this which should be an abstract base class HANDLE thread_handle() const { return _thread_handle; } void set_thread_handle(HANDLE handle) { _thread_handle = handle; } HANDLE interrupt_event() const { return _interrupt_event; } ! void set_interrupt_event(HANDLE interrupt_event) ! { ! if (_interrupt_event != NULL) { ! CloseHandle (_interrupt_event); ! } ! _interrupt_event = interrupt_event; ! } unsigned long thread_id() const { return _thread_id; } #ifndef PRODUCT // Used for debugging, return a unique integer for each thread. int thread_identifier() const { return _thread_id; } #endif #ifdef ASSERT // We expect no reposition failures so kill vm if we get one // bool valid_reposition_failure() { return false; } #endif // ASSERT void set_thread_id(unsigned long thread_id) { _thread_id = thread_id; } bool is_try_mutex_enter() { return false; } // This is a temporary fix for the thread states during // suspend/resume until we throw away OSThread completely. // NEEDS_CLEANUP
04-02-2008

EVALUATION Most probably, the fix for 6480378 is unrelated to the observed leaks, it only made it possible to observe them. I should also add the following note: the test provided is an applet test. Similiar standalone test (which shows/disposes a frame with a text area inside and a text being appended to the text are) doesn't shows any leaks.
17-09-2007