RFR 8145127: VM warning: WaitForMultipleObjects timed out (0) ...

Ivan Gerasimov ivan.gerasimov at oracle.com
Tue Jan 12 06:55:20 UTC 2016


Thanks David and Daniel!

Yes, as David wrote, a thread-id is 32-bit on Windows.

I'll do all the suggested changes and will push the fix later today.

Sincerely yours,
Ivan

On 06.01.2016 7:25, David Holmes wrote:
> On 6/01/2016 3:33 AM, Daniel D. Daugherty wrote:
>> Happy New Year!
>
> And to you :)
>
>>
>>  > http://cr.openjdk.java.net/~igerasim/8145127/01/webrev/
>>
>> src/os/windows/vm/os_windows.cpp
>>      L3923:         Atomic::cmpxchg((jint)GetCurrentThreadId(),
>> &process_exiting, 0);
>>          What's the return size of GetCurrentThreadId()? Are we
>
> It is a DWORD so 32-bit.
>
> Cheers,
> David
> -----
>
>>          down casting a larger size into a 'jint'? If so, that
>>          might allow more than one thread into this code when we
>>          only want one...
>>
>>          Also please consider adding a comment above this line.
>>          Perhaps something like:
>>
>>          // Atomically set process_exiting before the critical section
>>          // to increase the visibility between racing threads.
>>
>>      L3998:             if (portion_count > MAXIMUM_WAIT_OBJECTS) {
>>      L3999:                 portion_count = MAXIMUM_WAIT_OBJECTS;
>>          Wrong indent; should be two spaces relative to L3998.
>>
>>      L4013:               portion_count = handle_count - i;
>>          Please consider adding a comment for this error case.
>>          Perhaps something like:
>>          // Reset portion_count so we close the remaining
>>          // handles due to this error.
>>
>>      L4030:     if (OrderAccess::load_acquire(&process_exiting) != 0 &&
>>      L4031:         process_exiting != (jint)GetCurrentThreadId()) {
>>      L4032:       while (true) {
>>      L4033:         // Some other thread is about to call exit(), so we
>>      L4034:         // don't let the current thread proceed to exit() or
>> _endthreadex()
>>          The comment on L4033-4 is slightly misplaced now. It
>>          should be between L4031 and L4032.
>>
>>
>> Thumbs up modulo the GetCurrentThreadId() return size question
>> above. If that size is OK and you choose to make the comment
>> changes, I don't need to see another webrev.
>>
>> Dan
>>
>>
>> On 12/23/15 5:20 AM, Ivan Gerasimov wrote:
>>> Thank you David for review!
>>>
>>> Sincerely yours,
>>> Ivan
>>>
>>> On 23.12.2015 7:41, David Holmes wrote:
>>>> Looks okay.
>>>>
>>>> Second review needed though.
>>>>
>>>> Thanks,
>>>> David
>>>>
>>>> On 19/12/2015 10:28 PM, Ivan Gerasimov wrote:
>>>>>
>>>>>
>>>>>>> We will suspend the current thread if two conditions are satisfied:
>>>>>>> process_exiting != 0 and process_exiting != current thread id.
>>>>>>> But, yes, pr_ex isn't really needed, as we can use process_exiting
>>>>>>> directly.
>>>>>>>
>>>>>>> Here's the updated webrev:
>>>>>>> http://cr.openjdk.java.net/~igerasim/8145127/01/webrev/
>>>>>>
>>>>>> I still see pr_ex ??
>>>>>>
>>>>>
>>>>> Oops.
>>>>> Forgot to 'hg qrefresh' before generating the webrev.
>>>>> The webrev has just been updated in place.
>>>>>
>>>>> Sincerely yours,
>>>>> Ivan
>>>>>
>>>>
>>>
>>
>



More information about the hotspot-runtime-dev mailing list