Skip to content

Commit 28e7785

Browse files
authored
Merge pull request #19548 from theresa-m/fix_19378
(0.46.0) Check file type for shared class cache jar files
2 parents 2da7e0a + 8e3aa0e commit 28e7785

File tree

4 files changed

+131
-56
lines changed

4 files changed

+131
-56
lines changed

runtime/jcl/common/shared.c

Lines changed: 94 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -71,16 +71,17 @@ typedef struct URLElements {
7171
} URLElements;
7272

7373

74-
static J9ClassPathEntry* getCachedURL(JNIEnv* env, jint helperID, const char* pathChars, jsize pathLen, UDATA cpeType, U_16 cpeStatus);
74+
static J9ClassPathEntry *getCachedURL(JNIEnv *env, jint helperID, const char *pathChars, jsize pathLen, UDATA cpeType, U_16 cpeStatus, const char *correctedPath);
7575
static const char* copyString(J9PortLibrary* portlib, const char* toCopy, UDATA length, J9SharedStringFarm** farmRoot, const J9UTF8** makeUTF8);
7676
UDATA urlHashFn(void* item, void *userData);
77-
static jint createURLEntry(JNIEnv* env, jint helperID, J9ClassPathEntry** cpEntry_, char* correctedPathCopy, UDATA cpeType, U_16 cpeStatus);
77+
static jint createURLEntry(JNIEnv *env, jint helperID, J9ClassPathEntry **cpEntry_, const char *correctedPathCopy, UDATA cpeType, U_16 cpeStatus);
7878
UDATA utfHashEqualFn(void* left, void* right, void *userData);
7979
static jint createROMClassCookie(JNIEnv* env, J9JavaVM* vm, J9ROMClass* romClass, jbyteArray romClassCookieBuffer);
8080
static jint createToken(JNIEnv* env, jint helperID, J9ClassPathEntry** cpEntry_, const char* tokenChars, jsize tokenSize);
8181
static UDATA correctURLPath(JNIEnv* env, const char* pathChars, jsize pathLen, char** correctedPathPtr, J9SharedStringFarm** jclStringFarm);
8282
static const char* getCachedString(JNIEnv* env, const char* input, jsize length, J9SharedStringFarm** farmRoot, const J9UTF8** getUTF8);
83-
static UDATA getCpeTypeForProtocol(char* protocol, jsize protocolLen, const char* pathChars, jsize pathLen);
83+
static UDATA getCpeTypeForProtocol(JNIEnv *env, const char *protocol, jsize protocolLen, const char *urlPathChars, jsize urlPathLen, char **correctedPathPtr);
84+
static BOOLEAN isPathTypeJimage(const char *pathChars, jsize pathLen);
8485
static void getURLMethodIDs(JNIEnv* env);
8586
static J9Pool* getClasspathCache(JNIEnv* env);
8687
static J9Pool* getURLCache(JNIEnv* env);
@@ -122,14 +123,14 @@ correctURLPath(JNIEnv* env, const char* pathChars, jsize pathLen, char** correct
122123
returnVal = 1;
123124
startOffset = 0;
124125

125-
#ifdef WIN32
126+
#if defined(WIN32)
126127
for (;pathChars[startOffset]=='/'; startOffset++);
127128

128129
/* If Windows UNC (no path colon) do not remove leading spaces */
129130
if (pathChars[startOffset+1] != ':') {
130131
startOffset = 0;
131132
}
132-
#endif
133+
#endif /* defined(WIN32) */
133134

134135
if (pathLen >= STACK_STRINGBUF_SIZE) {
135136
if (!(bufPtr = (char*)j9mem_allocate_memory((pathLen + 1) * sizeof(char), J9MEM_CATEGORY_VM_JCL))) {
@@ -147,11 +148,11 @@ correctURLPath(JNIEnv* env, const char* pathChars, jsize pathLen, char** correct
147148
if (i == (pathLen-1)) {
148149
current = '\0'; /* remove trailing slash */
149150
}
150-
#ifdef WIN32
151+
#if defined(WIN32)
151152
else {
152153
current = '\\'; /* convert / to \\ */
153154
}
154-
#endif
155+
#endif /* defined(WIN32) */
155156
}
156157

157158
/* Assumes escape sequence is %nn, where nn is hex value */
@@ -229,7 +230,6 @@ createROMClassCookie(JNIEnv* env, J9JavaVM* vm, J9ROMClass* romClass, jbyteArray
229230
static jint
230231
createCPEntries(JNIEnv* env, jint helperID, jint urlCount, J9ClassPathEntry*** cpEntries_, URLElements* urlArrayElements)
231232
{
232-
J9JavaVM* vm = ((J9VMThread*)env)->javaVM;
233233
J9ClassPathEntry* cpEntries = NULL;
234234
struct J9ClasspathByID* newCacheItem = NULL;
235235
J9ClassPathEntry** cpePtrArray = NULL;
@@ -251,23 +251,23 @@ createCPEntries(JNIEnv* env, jint helperID, jint urlCount, J9ClassPathEntry*** c
251251
memset(cpePtrArray, 0, cpEntrySize);
252252
cpEntries = (J9ClassPathEntry*)((char*)cpePtrArray + (urlCount * (sizeof(J9ClassPathEntry*))));
253253

254-
for (i=0; i<urlCount; i++) {
255-
UDATA cpeType = 0;
256-
char* correctPath = NULL;
257-
258-
cpeType = getCpeTypeForProtocol((char*)urlArrayElements[i].protocolChars, urlArrayElements[i].protocolLen, urlArrayElements[i].pathChars, urlArrayElements[i].pathLen);
254+
for (i = 0; i < urlCount; i++) {
255+
char *correctedPath = NULL;
256+
UDATA cpeType = getCpeTypeForProtocol(
257+
env,
258+
urlArrayElements[i].protocolChars,
259+
urlArrayElements[i].protocolLen,
260+
urlArrayElements[i].pathChars,
261+
urlArrayElements[i].pathLen,
262+
&correctedPath);
259263
if (CPE_TYPE_UNKNOWN == cpeType) {
260264
Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse4(env);
261265
goto _error;
262266
}
263-
if (!correctURLPath(env, urlArrayElements[i].pathChars, urlArrayElements[i].pathLen, &correctPath, &(vm->sharedClassConfig->jclStringFarm))) {
264-
Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse5(env);
265-
goto _error;
266-
}
267267

268-
cpEntries[i].path = (U_8*)correctPath;
268+
cpEntries[i].path = (U_8 *)correctedPath;
269269
cpEntries[i].extraInfo = NULL;
270-
cpEntries[i].pathLength = (U_32)strlen(correctPath);
270+
cpEntries[i].pathLength = (U_32)strlen(correctedPath);
271271
cpEntries[i].flags = 0;
272272
cpEntries[i].type = (U_16)cpeType;
273273
cpePtrArray[i] = &cpEntries[i];
@@ -455,11 +455,10 @@ getURLMethodIDs(JNIEnv* env)
455455
return;
456456
}
457457

458-
459-
/* Note:CorrectedPathCopy must be a copied string which will not disappear and partition must be also not disappear */
458+
/* Note: correctedPathCopy must not disappear. */
460459
/* THREADING: Must be protected by jclCacheMutex */
461460
static jint
462-
createURLEntry(JNIEnv* env, jint helperID, J9ClassPathEntry** cpEntry_, char* correctedPathCopy, UDATA cpeType, U_16 cpeStatus)
461+
createURLEntry(JNIEnv *env, jint helperID, J9ClassPathEntry **cpEntry_, const char *correctedPathCopy, UDATA cpeType, U_16 cpeStatus)
463462
{
464463
J9JavaVM* vm = ((J9VMThread*)env)->javaVM;
465464
J9ClassPathEntry* newEntry;
@@ -546,40 +545,67 @@ getPathProtocolFromURL(JNIEnv* env, jobject url, jmethodID URLgetPathID, jmethod
546545
return rc;
547546
}
548547

548+
static BOOLEAN
549+
isPathTypeJimage(const char *pathChars, jsize pathLen)
550+
{
551+
char JimageEndsWith[] = DIR_SEPARATOR_STR "lib" DIR_SEPARATOR_STR "modules";
552+
IDATA len = LITERAL_STRLEN(JimageEndsWith);
553+
554+
if (pathLen > len) {
555+
const char *endsWith = pathChars + (pathLen - len);
556+
if (0 == strncmp(endsWith, JimageEndsWith, len)) {
557+
return TRUE;
558+
}
559+
}
560+
return FALSE;
561+
}
549562

550563
/* THREADING: Can be called multi-threaded */
551564
static UDATA
552-
getCpeTypeForProtocol(char* protocol, jsize protocolLen, const char* pathChars, jsize pathLen)
565+
getCpeTypeForProtocol(JNIEnv *env, const char *protocol, jsize protocolLen, const char *urlPathChars, jsize urlPathLen, char **correctedPathPtr)
553566
{
567+
J9JavaVM *vm = ((J9VMThread *)env)->javaVM;
568+
const char *pathChars = NULL;
569+
jsize pathLen = 0;
570+
554571
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_Entry();
555572

556-
if (!protocol) {
557-
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_Exit0();
558-
return 0;
573+
if (NULL == protocol) {
574+
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitFail1();
575+
return CPE_TYPE_UNKNOWN;
576+
}
577+
if (!correctURLPath(env, urlPathChars, urlPathLen, correctedPathPtr, &(vm->sharedClassConfig->jclStringFarm))) {
578+
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitFail2();
579+
return CPE_TYPE_UNKNOWN;
559580
}
560-
if (strncmp(protocol, "jar", 4)==0) {
581+
if (0 == strncmp(protocol, "jar", 4)) {
561582
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitJAR();
562583
return CPE_TYPE_JAR;
563584
}
564-
if (strncmp(protocol, "file", 5)==0) {
565-
char* endsWith = (char*)(pathChars + (pathLen-4));
566-
if ((strncmp(endsWith, ".jar", 4)==0) || (strncmp(endsWith, ".zip", 4)==0) || strstr(pathChars,"!/") || strstr(pathChars,"!\\")) {
585+
pathChars = *correctedPathPtr;
586+
pathLen = (jsize)strlen(pathChars);
587+
if (0 == strncmp(protocol, "file", 5)) {
588+
if ((NULL != strstr(pathChars, "!/")) || (NULL != strstr(pathChars, "!\\"))) {
589+
/* file is a fat jar */
567590
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitJAR();
568591
return CPE_TYPE_JAR;
592+
} else if (isPathTypeJimage(pathChars, pathLen)) {
593+
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitJIMAGE();
594+
return CPE_TYPE_JIMAGE;
569595
} else {
570-
char JimageEndsWith[] = DIR_SEPARATOR_STR "lib" DIR_SEPARATOR_STR "modules";
571-
IDATA len = LITERAL_STRLEN(JimageEndsWith);
572-
573-
if (pathLen >= len) {
574-
endsWith = (char*)(pathChars + (pathLen - len));
575-
if (strncmp(endsWith, JimageEndsWith, len) == 0) {
576-
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitJIMAGE();
577-
return CPE_TYPE_JIMAGE;
578-
}
596+
PORT_ACCESS_FROM_JAVAVM(vm);
597+
I_32 result = j9file_attr(pathChars);
598+
if (EsIsFile == result) {
599+
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitJAR();
600+
return CPE_TYPE_JAR;
601+
} else if (EsIsDir == result) {
602+
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitDIR();
603+
return CPE_TYPE_DIRECTORY;
604+
} else {
605+
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitFail3(result);
606+
return CPE_TYPE_UNKNOWN;
579607
}
580608
}
581-
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitDIR();
582-
return CPE_TYPE_DIRECTORY;
583609
}
584610
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_UnknownProtocol(protocolLen, protocol, pathLen, pathChars);
585611
Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitUnknown();
@@ -588,8 +614,8 @@ getCpeTypeForProtocol(char* protocol, jsize protocolLen, const char* pathChars,
588614

589615

590616
/* THREADING: Must be protected by jclCacheMutex */
591-
static J9ClassPathEntry*
592-
getCachedURL(JNIEnv* env, jint helperID, const char* pathChars, jsize pathLen, UDATA cpeType, U_16 cpeStatus)
617+
static J9ClassPathEntry *
618+
getCachedURL(JNIEnv *env, jint helperID, const char *pathChars, jsize pathLen, UDATA cpeType, U_16 cpeStatus, const char *correctedPath)
593619
{
594620
J9JavaVM* vm = ((J9VMThread*)env)->javaVM;
595621
struct URLhtEntry* anElement = NULL;
@@ -617,7 +643,6 @@ getCachedURL(JNIEnv* env, jint helperID, const char* pathChars, jsize pathLen, U
617643
} else {
618644
URLhtEntry newEntry;
619645
const char* origPathCopy;
620-
char* correctedPathCopy;
621646

622647
/* We must make a copy of the path
623648
This is kept in the URLhtEntry and must be valid for the lifetime of the JVM */
@@ -626,9 +651,7 @@ getCachedURL(JNIEnv* env, jint helperID, const char* pathChars, jsize pathLen, U
626651
goto _error;
627652
}
628653

629-
/* Function returns a corrected copy of pathChars into correctedPathCopy. */
630-
correctURLPath(env, pathChars, pathLen, &correctedPathCopy, &(config->jclStringFarm));
631-
if (!createURLEntry(env, helperID, &urlEntry, correctedPathCopy, cpeType, cpeStatus)) {
654+
if (!createURLEntry(env, helperID, &urlEntry, correctedPath, cpeType, cpeStatus)) {
632655
goto _error;
633656
}
634657

@@ -1230,6 +1253,7 @@ Java_com_ibm_oti_shared_SharedClassURLHelperImpl_findSharedClassImpl3(JNIEnv* en
12301253
U_16 cpeStatus = minimizeUpdateChecks ? CPE_STATUS_IGNORE_ZIP_LOAD_STATE : 0;
12311254
J9ClassLoader* classloader;
12321255
URLElements urlElements = {0};
1256+
char *correctedPath = NULL;
12331257

12341258
Trc_JCL_com_ibm_oti_shared_SharedClassURLHelperImpl_findSharedClassImpl_Entry(env, helperID);
12351259

@@ -1261,13 +1285,21 @@ Java_com_ibm_oti_shared_SharedClassURLHelperImpl_findSharedClassImpl3(JNIEnv* en
12611285
if (!getStringPair(env, &nameChars, &nameLen, &partitionChars, &partitionLen, classNameObj, partitionObj)) {
12621286
goto _errorPostClassNamePartition;
12631287
}
1264-
if (!(cpeType = getCpeTypeForProtocol((char*)urlElements.protocolChars, urlElements.protocolLen, urlElements.pathChars, urlElements.pathLen))) {
1288+
cpeType = getCpeTypeForProtocol(
1289+
env,
1290+
urlElements.protocolChars,
1291+
urlElements.protocolLen,
1292+
urlElements.pathChars,
1293+
urlElements.pathLen,
1294+
&correctedPath);
1295+
if (CPE_TYPE_UNKNOWN == cpeType) {
12651296
goto _errorPostClassNamePartition;
12661297
}
12671298

12681299
omrthread_monitor_enter(jclCacheMutex);
12691300

1270-
if (!(urlEntry = getCachedURL(env, helperID, urlElements.pathChars, urlElements.pathLen, cpeType, cpeStatus))) {
1301+
urlEntry = getCachedURL(env, helperID, urlElements.pathChars, urlElements.pathLen, cpeType, cpeStatus, correctedPath);
1302+
if (NULL == urlEntry) {
12711303
omrthread_monitor_exit(jclCacheMutex);
12721304
goto _errorPostClassNamePartition;
12731305
}
@@ -1341,6 +1373,7 @@ Java_com_ibm_oti_shared_SharedClassURLHelperImpl_storeSharedClassImpl3(JNIEnv* e
13411373
SCAbstractAPI * sharedapi = (SCAbstractAPI *)(config->sharedAPIObject);
13421374
U_16 cpeStatus = minimizeUpdateChecks ? CPE_STATUS_IGNORE_ZIP_LOAD_STATE : 0;
13431375
URLElements urlElements = {0};
1376+
char *correctedPath = NULL;
13441377

13451378
Trc_JCL_com_ibm_oti_shared_SharedClassURLHelperImpl_storeSharedClassImpl_Entry(env, helperID);
13461379

@@ -1373,13 +1406,21 @@ Java_com_ibm_oti_shared_SharedClassURLHelperImpl_storeSharedClassImpl3(JNIEnv* e
13731406
if (!getStringChars(env, &partitionChars, &partitionLen, partitionObj)) {
13741407
goto _errorPostPathProtocol;
13751408
}
1376-
if (!(cpeType = getCpeTypeForProtocol((char*)urlElements.protocolChars, urlElements.protocolLen, urlElements.pathChars, urlElements.pathLen))) {
1409+
cpeType = getCpeTypeForProtocol(
1410+
env,
1411+
urlElements.protocolChars,
1412+
urlElements.protocolLen,
1413+
urlElements.pathChars,
1414+
urlElements.pathLen,
1415+
&correctedPath);
1416+
if (CPE_TYPE_UNKNOWN == cpeType) {
13771417
goto _errorPostPartition;
13781418
}
13791419

13801420
omrthread_monitor_enter(jclCacheMutex);
13811421

1382-
if (!(urlEntry = getCachedURL(env, helperID, urlElements.pathChars, urlElements.pathLen, cpeType, cpeStatus))) {
1422+
urlEntry = getCachedURL(env, helperID, urlElements.pathChars, urlElements.pathLen, cpeType, cpeStatus, correctedPath);
1423+
if (NULL == urlEntry) {
13831424
omrthread_monitor_exit(jclCacheMutex);
13841425
goto _errorPostPartition;
13851426
}
@@ -2526,15 +2567,15 @@ runCorrectURLUnitTests(JNIEnv* env)
25262567
testCorrectURLPath(env, "///C:/dir%201/dir%202/dir%20%203/", "C:\\dir 1\\dir 2\\dir 3");
25272568
testCorrectURLPath(env, "//UNCTest/subdir", "\\\\UNCTest\\subdir");
25282569
testCorrectURLPath(env, "//UNCTest/sub%20dir", "\\\\UNCTest\\sub dir");
2529-
#else
2570+
#else /* defined(WIN32) */
25302571
testCorrectURLPath(env, "/dir1", "/dir1");
25312572
testCorrectURLPath(env, "/dir1/", "/dir1");
25322573
testCorrectURLPath(env, "//dir1/", "//dir1");
25332574
testCorrectURLPath(env, "/dir%201", "/dir 1");
25342575
testCorrectURLPath(env, "/dir%251", "/dir%1");
25352576
testCorrectURLPath(env, "/dir%201/", "/dir 1");
25362577
testCorrectURLPath(env, "/dir%201/dir%202/dir%20%203/", "/dir 1/dir 2/dir 3");
2537-
#endif /* WIN32 */
2578+
#endif /* defined(WIN32) */
25382579
}
25392580

25402581
#endif /* J9SHR_UNIT_TEST */

runtime/jcl/j9jcl.tdf

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse1 Overhead=1 Level
181181
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse2 Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting FALSE due to memory allocation failure"
182182
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse3 Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting FALSE as getPathProtocolFromURL failed"
183183
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse4 Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting FALSE as getCpeTypeForProtocol failed"
184-
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse5 Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting FALSE as correctURLPath failed"
184+
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse5 Obsolete Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting FALSE as correctURLPath failed"
185185
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse6 Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting FALSE as pool_newElement failed"
186186
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitFalse7 Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting FALSE as copyString failed"
187187
TraceExit=Trc_JCL_com_ibm_oti_shared_createCPEntries_ExitTrue Overhead=1 Level=1 Template="JCL: com.ibm.oti.shared createCPEntries: Exiting with TRUE"
@@ -215,7 +215,7 @@ TraceExit=Trc_JCL_com_ibm_oti_shared_getCachedURL_ExitFound Overhead=1 Level=2 T
215215
TraceExit=Trc_JCL_com_ibm_oti_shared_getCachedURL_ExitNull Overhead=1 Level=2 Template="JCL: com.ibm.oti.shared getCachedURL: Exiting with NULL"
216216

217217
TraceEntry=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_Entry Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Entering"
218-
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_Exit0 Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Exiting with 0 as protocol is NULL"
218+
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_Exit0 Obsolete Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Exiting with 0 as protocol is NULL"
219219
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitJAR Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Exiting with JAR"
220220
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitDIR Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Exiting with DIR"
221221
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitJXE Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Exiting with JXE"
@@ -707,3 +707,7 @@ TraceEvent=Trc_JCL_MXBean_getUptimeImpl Overhead=1 Level=3 Template="RuntimeMXBe
707707

708708
TraceException=Trc_JCL_memoryManagement_verifyMemoryUsageAfterGC_memoryUsageError Test NoEnv Overhead=1 Level=1 Template="JCL: verifyMemoryUsageAfterGC memoryUsageError: GcName=%s, MemoryPool=%s, initialSize=%lld, preUsedSize=%llu, preCommittedSize==%llu, preMaxSize=%lld, postUsedSize=%llu, postCommittedSize==%llu, postMaxSize=%lld"
709709
TraceEvent=Trc_JCL_memoryManagement_verifyMemoryUsageAfterGC_memoryUsage Test NoEnv Overhead=1 Level=6 Template="JCL: verifyMemoryUsageAfterGC memoryUsage: GcName=%s, MemoryPool=%s, initialSize=%lld, preUsedSize=%llu, preCommittedSize==%llu, preMaxSize=%lld, postUsedSize=%llu, postCommittedSize==%llu, postMaxSize=%lld"
710+
711+
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitFail1 Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Protocol is NULL"
712+
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitFail2 Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Call to correctURLPath failed"
713+
TraceExit=Trc_JCL_com_ibm_oti_shared_getCpeTypeForProtocol_ExitFail3 Noenv Overhead=1 Level=3 Template="JCL: com.ibm.oti.shared getCpeTypeForProtocol: Attempt to determine path type resulted in error code %d"

0 commit comments

Comments
 (0)