1.1 --- a/src/os/solaris/dtrace/libjvm_db.c Tue Mar 15 06:50:01 2011 -0700 1.2 +++ b/src/os/solaris/dtrace/libjvm_db.c Wed Mar 16 14:57:49 2011 -0400 1.3 @@ -524,6 +524,8 @@ 1.4 CHECK_FAIL(err); 1.5 err = read_pointer(J, constantPool + nameIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &nameSymbol); 1.6 CHECK_FAIL(err); 1.7 + // The symbol is a CPSlot and has lower bit set to indicate metadata 1.8 + nameSymbol &= (~1); // remove metadata lsb 1.9 err = ps_pread(J->P, nameSymbol + OFFSET_Symbol_length, &nameSymbolLength, 2); 1.10 CHECK_FAIL(err); 1.11 nameString = (char*)calloc(nameSymbolLength + 1, 1); 1.12 @@ -535,6 +537,7 @@ 1.13 CHECK_FAIL(err); 1.14 err = read_pointer(J, constantPool + signatureIndex * POINTER_SIZE + SIZE_constantPoolOopDesc, &signatureSymbol); 1.15 CHECK_FAIL(err); 1.16 + signatureSymbol &= (~1); // remove metadata lsb 1.17 err = ps_pread(J->P, signatureSymbol + OFFSET_Symbol_length, &signatureSymbolLength, 2); 1.18 CHECK_FAIL(err); 1.19 signatureString = (char*)calloc(signatureSymbolLength + 1, 1);