Codereview request for 7171184: Make the failure message in 7168110 more specific
David Holmes
david.holmes at oracle.com
Wed May 23 16:58:25 PDT 2012
On 24/05/2012 7:02 AM, Alan Bateman wrote:
> On 23/05/2012 20:37, Rob McKenna wrote:
>> Hi Alan,
>>
>> Sorry, you've picked me up on that "if (" space a number of times.
>> Thanks for pointing it out again.
>>
>> What should I be checking w.r.t. the ProcessIdToSessionId? It returns
>> a 0 on failure so once the session id's are unequal or we've
>> encountered an ERROR_ACCESS_DENIED we should really be good to go right?
>>
>> Looking at that reminds me that I had got an && instead of an || for
>> the session id / error check. Its a good point that if the
>> ProcessIdToSessionId call fails for a reason outside ACCESS_DENIED, we
>> won't know about it. I'm wondering if I should revert that now?
> What you have will work but we shouldn't be comparing pSid to cSid
> unless both calls to ProcessIdToSessionId succeed.
Yeah I raised this previously with Rob and the response was that on
failure the sessionId will be set to zero but I do not see that in the
docs for ProcessIdToSessionId. The other assumptions was that requesting
the session Id for the current process could never fail - I don't know
how valid that is (these APIs don't document any actual errors). If
those two assumptions hold then the current code is correct, otherwise
... something like this:
if (( ProcessIdToSessionId( GetCurrentProcessId(), &cSid) != 0) {
BOOL result = ProcessIdToSessionId(GetProcessId(hProcess), &pSid);
if (result != 0) { // have valid sessionIds
if (pSid != cSid)
JNU_ThrowIOException(env, "useful message");
// else same session so original memory error stands
} else if (GetLastError() == ERROR_ACCESS_DENIED) {
// implies that the sessions must be different
JNU_ThrowIOException(env, "useful message");
}
// else some other error getting other session id
}
// else some error getting current session Id
But this needs to ensure the original error is not lost, and it would be
nice not to have two throws statements :(
I get the feeling what seemed like a simple suggestion is getting out of
control. Feel free to drop this.
David
-----
> -Alan.
More information about the serviceability-dev
mailing list