-
Bug
-
Resolution: Fixed
-
P2
-
25
-
b03
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8360036 | 25 | Erik Gahlin | P2 | Resolved | Fixed | master |
When Java events, such as ActiveRecording, write the name of the recording, it fails if java.lang.String has been used as filter. Reason is that EventWriter uses java.lang.String::charAt() while writing the event.
private void putStringValue(String s) {
int length = s.length();
if (isValidForSize(1 + 5 + 3 * length)) {
putUncheckedByte(StringParser.Encoding.CHAR_ARRAY.byteValue()); // 1 byte
putUncheckedInt(length); // max 5 bytes
for (int i = 0; i < length; i++) {
putUncheckedChar(s.charAt(i)); // max 3 bytes
}
}
}
java.lang.String::length() is also a problem and any indirect call, such as java.lang.String::coder(), java.lang.StringLatin1::charAt(..), and java.lang.StringUTF16::charAt()
private void putStringValue(String s) {
int length = s.length();
if (isValidForSize(1 + 5 + 3 * length)) {
putUncheckedByte(StringParser.Encoding.CHAR_ARRAY.byteValue()); // 1 byte
putUncheckedInt(length); // max 5 bytes
for (int i = 0; i < length; i++) {
putUncheckedChar(s.charAt(i)); // max 3 bytes
}
}
}
java.lang.String::length() is also a problem and any indirect call, such as java.lang.String::coder(), java.lang.StringLatin1::charAt(..), and java.lang.StringUTF16::charAt()
- backported by
-
JDK-8360036 JFR: Instrumentation of java.lang.String corrupts recording
-
- Resolved
-
- links to
-
Commit(jdk25) openjdk/jdk/c832f001
-
Commit(master) openjdk/jdk/2f2acb2e
-
Review(jdk25) openjdk/jdk/25886
-
Review(master) openjdk/jdk/25814