RFR 8064694: Kitchensink: WaitForMultipleObjects failed in hotspot\src\os\windows\vm\os_windows.cpp: 3844
Ivan Gerasimov
ivan.gerasimov at oracle.com
Sun Nov 16 21:23:43 UTC 2014
Thank you Daniel!
Please find the updated webrev with your suggestions incorporated here:
http://cr.openjdk.java.net/~igerasim/8064694/1/webrev/
Concerning the thread priority: If the application is of
NORMAL_PRIORITY_CLASS, then setting the thread's priority level to
THREAD_PRIORITY_HIGHEST will result in its priority value to be only 10
(of maximum 31).
http://msdn.microsoft.com/en-us/library/windows/desktop/ms685100(v=vs.85).aspx
And if the process is HIGH_PRIORITY_CLASS, then the tread with the
HIGHEST priority level will have priority value == 15 of 31.
I believe, it should not be too much, and the machine will not become
busy with only those closing threads.
However, I hope it would be enough to make them complete faster than
other threads of the NORMAL priority level withing the same application.
Sincerely yours,
Ivan
On 15.11.2014 2:22, Daniel D. Daugherty wrote:
> On 11/14/14 5:35 AM, Ivan Gerasimov wrote:
>> Hello!
>>
>> The recent fix for JDK-8059533 ((process) Make exiting process wait
>> for exiting threads [win]) caused the warning message to be printed
>> in some test environments:
>> -----------
>> os_windows.cpp:3844 is in the newly updated
>> os::win32::exit_process_or_thread(Ept what, int exit_code)
>> -----------
>>
>> This has been observed with debug builds on highly loaded systems.
>>
>>
>> To address the issue it is proposed to do three things:
>> 1) increase the timeout for debug builds,
>> 2) increase the maximum number of the thread handles to be stored,
>> 3) rise the priority of the exiting threads, if we need to wait for
>> them.
>>
>> Would you please help review the fix?
>>
>> BUGURL: https://bugs.openjdk.java.net/browse/JDK-8064694
>> WEBREV: http://cr.openjdk.java.net/~igerasim/8064694/0/webrev/
>
> src/os/windows/vm/os_windows.cpp
>
> line 3784: #define MAX_EXIT_HANDLES NOT_DEBUG(32) DEBUG_ONLY(128)
> Instead of NOT_DEBUG can you use PRODUCT_ONLY?
> Instead of DEBUG_ONLY can you used NOT_PRODUCT?
>
> That uses the smaller value for only one build config (PRODUCT).
>
> line 3785: #define EXIT_TIMEOUT NOT_DEBUG(1000) DEBUG_ONLY(4000)
> /*1 sec in product, 4 sec in debug*/
> Instead of NOT_DEBUG can you use PRODUCT_ONLY?
> Instead of DEBUG_ONLY can you used NOT_PRODUCT?
> Please add spaces between the comment delimiters and the comment
> text.
>
> That uses the smaller timeout for only one build config (PRODUCT).
>
> line 3836 // Rise the priority...
> Typo: 'Rise' -> 'Raise'
>
> About the general idea of raising the exiting thread's priority,
> if the exiting thread is looping in some Win* OS code after this
> point, will raising the priority make the machine unusable?
>
> Dan
>
>
>>
>> The fix was tested on all available platforms, with the hotspot
>> testset. No failures.
>>
>> Sincerely yours,
>> Ivan
>>
>
>
>
More information about the serviceability-dev
mailing list