Skip to content

Commit dd01de1

Browse files
authored
Merge pull request #19780 from babsingh/main9
Add a NULL check for walkState->userData4
2 parents 2bbdc8b + da2f905 commit dd01de1

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

runtime/vm/swalk.c

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -220,19 +220,23 @@ UDATA walkStackFrames(J9VMThread *currentThread, J9StackWalkState *walkState)
220220
if (walkState->flags & J9_STACKWALK_CHECK_I_SLOTS_FOR_OBJECTS) swPrintf(walkState, 2, "\tCHECK_I_SLOTS_FOR_OBJECTS\n");
221221
if (walkState->flags & J9_STACKWALK_SAVE_STACKED_REGISTERS) swPrintf(walkState, 2, "\tSAVE_STACKED_REGISTERS\n");
222222

223-
if ((walkState->flags & (J9_STACKWALK_MAINTAIN_REGISTER_MAP | J9_STACKWALK_INCLUDE_CALL_IN_FRAMES)) == (J9_STACKWALK_MAINTAIN_REGISTER_MAP | J9_STACKWALK_INCLUDE_CALL_IN_FRAMES)) {
224-
PORT_ACCESS_FROM_WALKSTATE(walkState);
225-
J9UTF8 * className = J9ROMCLASS_CLASSNAME(((J9Class *) walkState->userData4)->romClass);
226-
char detailStackBuffer[J9VM_PACKAGE_NAME_BUFFER_LENGTH];
227-
char * detail = NULL;
228-
j9object_t detailMessage = J9VMJAVALANGTHROWABLE_DETAILMESSAGE(currentThread, walkState->restartException);
223+
if (J9_ARE_ALL_BITS_SET(walkState->flags, J9_STACKWALK_MAINTAIN_REGISTER_MAP | J9_STACKWALK_INCLUDE_CALL_IN_FRAMES)) {
224+
J9Class * clazz = (J9Class *) walkState->userData4;
229225

230-
if (NULL != detailMessage) {
231-
detail = walkState->walkThread->javaVM->internalVMFunctions->copyStringToUTF8WithMemAlloc(currentThread, detailMessage, J9_STR_NULL_TERMINATE_RESULT, ": ", 2, detailStackBuffer, J9VM_PACKAGE_NAME_BUFFER_LENGTH, NULL);
232-
}
233-
swPrintf(walkState, 2, "\tThrowing exception: %.*s%s\n", J9UTF8_LENGTH(className), J9UTF8_DATA(className), detail ? detail : "");
234-
if (detailStackBuffer != detail) {
235-
j9mem_free_memory(detail);
226+
if (NULL != clazz) {
227+
PORT_ACCESS_FROM_WALKSTATE(walkState);
228+
J9UTF8 * className = J9ROMCLASS_CLASSNAME(clazz->romClass);
229+
char detailStackBuffer[J9VM_PACKAGE_NAME_BUFFER_LENGTH];
230+
char * detail = NULL;
231+
j9object_t detailMessage = J9VMJAVALANGTHROWABLE_DETAILMESSAGE(currentThread, walkState->restartException);
232+
233+
if (NULL != detailMessage) {
234+
detail = walkState->walkThread->javaVM->internalVMFunctions->copyStringToUTF8WithMemAlloc(currentThread, detailMessage, J9_STR_NULL_TERMINATE_RESULT, ": ", 2, detailStackBuffer, J9VM_PACKAGE_NAME_BUFFER_LENGTH, NULL);
235+
}
236+
swPrintf(walkState, 2, "\tThrowing exception: %.*s%s\n", J9UTF8_LENGTH(className), J9UTF8_DATA(className), detail ? detail : "");
237+
if (detailStackBuffer != detail) {
238+
j9mem_free_memory(detail);
239+
}
236240
}
237241
}
238242

0 commit comments

Comments
 (0)