Codereview request for 7171184: Make the failure message in 7168110 more specific
Rob McKenna
rob.mckenna at oracle.com
Wed May 23 12:37:37 PDT 2012
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?
-Rob
On 23/05/12 19:58, Alan Bateman wrote:
> On 23/05/2012 18:44, Rob McKenna wrote:
>> Hi folks,
>>
>> David Holmes suggested a rewrite of the original bug (7168110) so
>> I've put together the following:
>>
>> http://cr.openjdk.java.net/~robm/7171184/webrev.01/
>>
>> It will narrow down the cause of the error and return a more specific
>> message when there is a problem attaching jstack to a process created
>> in another session.
>>
>> Let me know what you think,
> I wasn't aware of ProcessIdToSessionId but seems a good idea.
>
> I assume you should check the return value from ProcessIdToSessionId
> before looking at the session id or last error.
>
> Minor nit but you are missing a space in "if(" (line 479)
>
> One idea to avoid duplicating the cleanup (VirtualFreeEx) code is:
>
> if (GetLastError() == ERROR_NOT_ENOUGH_MEMORY) {
> if (( ProcessIdToSessionId( GetCurrentProcessId(), &cSid) != 0) {
> BOOL result = ProcessIdToSessionId(GetProcessId(hProcess), &pSid);
> if ((result != 0 && (pSid != cSid)) || GetLastError() ==
> ERROR_ACCESS_DENIED)) {
> JNU_ThrowIOException(env, "useful message");
> SetLastError(0);
> }
> }
> }
> if (GetLastError() != 0)
> JNU_ThrowIOExceptionWithLastError(env, "CreateRemoteThread failed");
>
> Just a suggestion so that you have one return path. The one downside
> (and you've got this issue already) is that if ProcessIdToSessionId
> fails with something other access denied then the error for the
> exception wont' be right.
>
> -Alan.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/serviceability-dev/attachments/20120523/b70db0ca/attachment.html
More information about the serviceability-dev
mailing list