提交 2a65095c 编写于 作者: S sspitsyn

8134103: JVMTI_ERROR_WRONG_PHASE(112): on checking for an interface

Summary: Add guards to the jdwp agent shutdown
Reviewed-by: dholmes, dcubed, dsamersoff
上级 88060437
/* /*
* Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -125,15 +125,13 @@ debugLoop_run(void) ...@@ -125,15 +125,13 @@ debugLoop_run(void)
jboolean replyToSender = JNI_TRUE; jboolean replyToSender = JNI_TRUE;
/* /*
* For VirtualMachine commands we hold the vmDeathLock * For all commands we hold the vmDeathLock
* while executing and replying to the command. This ensures * while executing and replying to the command. This ensures
* that a VM command after VM_DEATH will be allowed to complete * that a command after VM_DEATH will be allowed to complete
* before the thread posting the VM_DEATH continues VM * before the thread posting the VM_DEATH continues VM
* termination. * termination.
*/ */
if (cmd->cmdSet == JDWP_COMMAND_SET(VirtualMachine)){ debugMonitorEnter(vmDeathLock);
debugMonitorEnter(vmDeathLock);
}
/* Initialize the input and output streams */ /* Initialize the input and output streams */
inStream_init(&in, p); inStream_init(&in, p);
...@@ -172,9 +170,7 @@ debugLoop_run(void) ...@@ -172,9 +170,7 @@ debugLoop_run(void)
/* /*
* Release the vmDeathLock as the reply has been posted. * Release the vmDeathLock as the reply has been posted.
*/ */
if (cmd->cmdSet == JDWP_COMMAND_SET(VirtualMachine)){ debugMonitorExit(vmDeathLock);
debugMonitorExit(vmDeathLock);
}
inStream_destroy(&in); inStream_destroy(&in);
outStream_destroy(&out); outStream_destroy(&out);
......
/* /*
* Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved. * Copyright (c) 1998, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
* *
* This code is free software; you can redistribute it and/or modify it * This code is free software; you can redistribute it and/or modify it
...@@ -240,10 +240,10 @@ dequeueCommand(void) ...@@ -240,10 +240,10 @@ dequeueCommand(void)
size = commandSize(command); size = commandSize(command);
/* /*
* Immediately close out any commands enqueued from a * Immediately close out any commands enqueued from
* previously attached debugger. * a dead VM or a previously attached debugger.
*/ */
if (command->sessionID != currentSessionID) { if (gdata->vmDead || command->sessionID != currentSessionID) {
log_debugee_location("dequeueCommand(): command session removal", NULL, NULL, 0); log_debugee_location("dequeueCommand(): command session removal", NULL, NULL, 0);
completeCommand(command); completeCommand(command);
command = NULL; command = NULL;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册