8134103: JVMTI_ERROR_WRONG_PHASE(112): on checking for an interface
Add guards to the jdwp agent shutdown Reviewed-by: dholmes, dcubed, dsamersoff
This commit is contained in:
parent
6c57d986b0
commit
6fe5283457
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 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)
|
|||||||
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)
|
|||||||
/*
|
/*
|
||||||
* 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);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 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)
|
|||||||
|
|
||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user