Skip to content

Commit 43ae0cf

Browse files
committed
8261167: print_process_memory_info add a close call after fopen
Reviewed-by: stuefe, dholmes
1 parent 48f5220 commit 43ae0cf

File tree

1 file changed

+28
-22
lines changed

1 file changed

+28
-22
lines changed

src/hotspot/os/linux/os_linux.cpp

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2195,29 +2195,35 @@ void os::Linux::print_process_memory_info(outputStream* st) {
21952195
int num_found = 0;
21962196
FILE* f = ::fopen("/proc/self/status", "r");
21972197
char buf[256];
2198-
while (::fgets(buf, sizeof(buf), f) != NULL && num_found < num_values) {
2199-
if ( (vmsize == -1 && sscanf(buf, "VmSize: " SSIZE_FORMAT " kB", &vmsize) == 1) ||
2200-
(vmpeak == -1 && sscanf(buf, "VmPeak: " SSIZE_FORMAT " kB", &vmpeak) == 1) ||
2201-
(vmswap == -1 && sscanf(buf, "VmSwap: " SSIZE_FORMAT " kB", &vmswap) == 1) ||
2202-
(vmhwm == -1 && sscanf(buf, "VmHWM: " SSIZE_FORMAT " kB", &vmhwm) == 1) ||
2203-
(vmrss == -1 && sscanf(buf, "VmRSS: " SSIZE_FORMAT " kB", &vmrss) == 1) ||
2204-
(rssanon == -1 && sscanf(buf, "RssAnon: " SSIZE_FORMAT " kB", &rssanon) == 1) ||
2205-
(rssfile == -1 && sscanf(buf, "RssFile: " SSIZE_FORMAT " kB", &rssfile) == 1) ||
2206-
(rssshmem == -1 && sscanf(buf, "RssShmem: " SSIZE_FORMAT " kB", &rssshmem) == 1)
2207-
)
2208-
{
2209-
num_found ++;
2198+
if (f != NULL) {
2199+
while (::fgets(buf, sizeof(buf), f) != NULL && num_found < num_values) {
2200+
if ( (vmsize == -1 && sscanf(buf, "VmSize: " SSIZE_FORMAT " kB", &vmsize) == 1) ||
2201+
(vmpeak == -1 && sscanf(buf, "VmPeak: " SSIZE_FORMAT " kB", &vmpeak) == 1) ||
2202+
(vmswap == -1 && sscanf(buf, "VmSwap: " SSIZE_FORMAT " kB", &vmswap) == 1) ||
2203+
(vmhwm == -1 && sscanf(buf, "VmHWM: " SSIZE_FORMAT " kB", &vmhwm) == 1) ||
2204+
(vmrss == -1 && sscanf(buf, "VmRSS: " SSIZE_FORMAT " kB", &vmrss) == 1) ||
2205+
(rssanon == -1 && sscanf(buf, "RssAnon: " SSIZE_FORMAT " kB", &rssanon) == 1) ||
2206+
(rssfile == -1 && sscanf(buf, "RssFile: " SSIZE_FORMAT " kB", &rssfile) == 1) ||
2207+
(rssshmem == -1 && sscanf(buf, "RssShmem: " SSIZE_FORMAT " kB", &rssshmem) == 1)
2208+
)
2209+
{
2210+
num_found ++;
2211+
}
22102212
}
2211-
}
2212-
st->print_cr("Virtual Size: " SSIZE_FORMAT "K (peak: " SSIZE_FORMAT "K)", vmsize, vmpeak);
2213-
st->print("Resident Set Size: " SSIZE_FORMAT "K (peak: " SSIZE_FORMAT "K)", vmrss, vmhwm);
2214-
if (rssanon != -1) { // requires kernel >= 4.5
2215-
st->print(" (anon: " SSIZE_FORMAT "K, file: " SSIZE_FORMAT "K, shmem: " SSIZE_FORMAT "K)",
2216-
rssanon, rssfile, rssshmem);
2217-
}
2218-
st->cr();
2219-
if (vmswap != -1) { // requires kernel >= 2.6.34
2220-
st->print_cr("Swapped out: " SSIZE_FORMAT "K", vmswap);
2213+
fclose(f);
2214+
2215+
st->print_cr("Virtual Size: " SSIZE_FORMAT "K (peak: " SSIZE_FORMAT "K)", vmsize, vmpeak);
2216+
st->print("Resident Set Size: " SSIZE_FORMAT "K (peak: " SSIZE_FORMAT "K)", vmrss, vmhwm);
2217+
if (rssanon != -1) { // requires kernel >= 4.5
2218+
st->print(" (anon: " SSIZE_FORMAT "K, file: " SSIZE_FORMAT "K, shmem: " SSIZE_FORMAT "K)",
2219+
rssanon, rssfile, rssshmem);
2220+
}
2221+
st->cr();
2222+
if (vmswap != -1) { // requires kernel >= 2.6.34
2223+
st->print_cr("Swapped out: " SSIZE_FORMAT "K", vmswap);
2224+
}
2225+
} else {
2226+
st->print_cr("Could not open /proc/self/status to get process memory related information");
22212227
}
22222228

22232229
// Print glibc outstanding allocations.

0 commit comments

Comments
 (0)