RFR 8145127: VM warning: WaitForMultipleObjects timed out (0) ...
David Holmes
david.holmes at oracle.com
Wed Jan 6 04:25:34 UTC 2016
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 serviceability-dev
mailing list