8006001: [parfait] Possible file leak in hotspot/src/os/linux/vm/perfMemory_linux.cpp
Reviewed-by: zgu, coleenp, hseigel, dholmes
--- a/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp Thu Apr 04 10:01:26 2013 -0700
+++ b/hotspot/src/os/bsd/vm/perfMemory_bsd.cpp Fri Apr 05 11:15:13 2013 -0700
@@ -672,15 +672,15 @@
RESTARTABLE(::open(filename, oflags), result);
if (result == OS_ERR) {
if (errno == ENOENT) {
- THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
- "Process not found");
+ THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
+ "Process not found", OS_ERR);
}
else if (errno == EACCES) {
- THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
- "Permission denied");
+ THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
+ "Permission denied", OS_ERR);
}
else {
- THROW_MSG_0(vmSymbols::java_io_IOException(), strerror(errno));
+ THROW_MSG_(vmSymbols::java_io_IOException(), strerror(errno), OS_ERR);
}
}
@@ -828,7 +828,7 @@
char* mapAddress;
int result;
int fd;
- size_t size;
+ size_t size = 0;
const char* luser = NULL;
int mmap_prot;
@@ -899,9 +899,12 @@
if (*sizep == 0) {
size = sharedmem_filesize(fd, CHECK);
- assert(size != 0, "unexpected size");
+ } else {
+ size = *sizep;
}
+ assert(size > 0, "unexpected size <= 0");
+
mapAddress = (char*)::mmap((char*)0, size, mmap_prot, MAP_SHARED, fd, 0);
// attempt to close the file - restart if it gets interrupted,
--- a/hotspot/src/os/linux/vm/perfMemory_linux.cpp Thu Apr 04 10:01:26 2013 -0700
+++ b/hotspot/src/os/linux/vm/perfMemory_linux.cpp Fri Apr 05 11:15:13 2013 -0700
@@ -672,15 +672,15 @@
RESTARTABLE(::open(filename, oflags), result);
if (result == OS_ERR) {
if (errno == ENOENT) {
- THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
- "Process not found");
+ THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
+ "Process not found", OS_ERR);
}
else if (errno == EACCES) {
- THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
- "Permission denied");
+ THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
+ "Permission denied", OS_ERR);
}
else {
- THROW_MSG_0(vmSymbols::java_io_IOException(), strerror(errno));
+ THROW_MSG_(vmSymbols::java_io_IOException(), strerror(errno), OS_ERR);
}
}
@@ -828,7 +828,7 @@
char* mapAddress;
int result;
int fd;
- size_t size;
+ size_t size = 0;
const char* luser = NULL;
int mmap_prot;
@@ -899,9 +899,12 @@
if (*sizep == 0) {
size = sharedmem_filesize(fd, CHECK);
- assert(size != 0, "unexpected size");
+ } else {
+ size = *sizep;
}
+ assert(size > 0, "unexpected size <= 0");
+
mapAddress = (char*)::mmap((char*)0, size, mmap_prot, MAP_SHARED, fd, 0);
// attempt to close the file - restart if it gets interrupted,
--- a/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp Thu Apr 04 10:01:26 2013 -0700
+++ b/hotspot/src/os/solaris/vm/perfMemory_solaris.cpp Fri Apr 05 11:15:13 2013 -0700
@@ -687,15 +687,15 @@
RESTARTABLE(::open(filename, oflags), result);
if (result == OS_ERR) {
if (errno == ENOENT) {
- THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
- "Process not found");
+ THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
+ "Process not found", OS_ERR);
}
else if (errno == EACCES) {
- THROW_MSG_0(vmSymbols::java_lang_IllegalArgumentException(),
- "Permission denied");
+ THROW_MSG_(vmSymbols::java_lang_IllegalArgumentException(),
+ "Permission denied", OS_ERR);
}
else {
- THROW_MSG_0(vmSymbols::java_io_IOException(), strerror(errno));
+ THROW_MSG_(vmSymbols::java_io_IOException(), strerror(errno), OS_ERR);
}
}
@@ -843,7 +843,7 @@
char* mapAddress;
int result;
int fd;
- size_t size;
+ size_t size = 0;
const char* luser = NULL;
int mmap_prot;
@@ -914,9 +914,12 @@
if (*sizep == 0) {
size = sharedmem_filesize(fd, CHECK);
- assert(size != 0, "unexpected size");
+ } else {
+ size = *sizep;
}
+ assert(size > 0, "unexpected size <= 0");
+
mapAddress = (char*)::mmap((char*)0, size, mmap_prot, MAP_SHARED, fd, 0);
// attempt to close the file - restart if it gets interrupted,
--- a/hotspot/src/os/windows/vm/perfMemory_windows.cpp Thu Apr 04 10:01:26 2013 -0700
+++ b/hotspot/src/os/windows/vm/perfMemory_windows.cpp Fri Apr 05 11:15:13 2013 -0700
@@ -1581,7 +1581,7 @@
ResourceMark rm;
void *mapAddress = 0;
- size_t size;
+ size_t size = 0;
HANDLE fmh;
DWORD ofm_access;
DWORD mv_access;
@@ -1652,9 +1652,12 @@
if (*sizep == 0) {
size = sharedmem_filesize(rfilename, CHECK);
- assert(size != 0, "unexpected size");
+ } else {
+ size = *sizep;
}
+ assert(size > 0, "unexpected size <= 0");
+
// Open the file mapping object with the given name
fmh = open_sharedmem_object(robjectname, ofm_access, CHECK);