On Tue, 4 Mar 2025 06:42:09 GMT, David Holmes <dhol...@openjdk.org> wrote:
>> Following on from JDK-8350820, which backed out the _snprintf to snprintf >> change (JDK-8336289) in OperatingSystemImpl.c on Windows, because the >> counter names were being truncated (so CPU monitoring was not possible). >> >> This change moves to snprintf again, but the counter names are not truncated. >> >> snprintf must need the null terminator to fit inside the buffer length >> given. It does not, and snprintf truncates (and always add the null >> terminator). > > src/jdk.management/windows/native/libmanagement_ext/OperatingSystemImpl.c > line 296: > >> 294: /* PDH format patterns, and lengths of their constant component. */ >> 295: static const char* const OBJECT_COUNTER_FMT = "\\%s\\%s"; >> 296: static const size_t OBJECT_COUNTER_FMT_LEN = 2; > > Pre-existing but as per earlier discussions on this, what exactly do these > lengths mean?? Yes was trying to clarify that with the comment: the "constant component", the number of fixed characters. So allocation size is e.g. OBJECT_COUNTER_FMT_LEN (==2) to account for the two backslashes in that format, plus the lengths of the two strings, plus the terminator. ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/23861#discussion_r1978858171