open-calls in hotspot code instead of os::open ?
Ioi Lam
ioi.lam at oracle.com
Wed Feb 6 14:08:21 UTC 2019
I think this should be fixed.
BTW, is there a way to forbid all the calls to ::open()?
Thanks
- Ioi
On 2/6/19 5:18 AM, Baesken, Matthias wrote:
> Hello, I noticed a few calls to open instead of os::open in the hotspot C++ code .
> For example :
>
> share/memory/filemap.cpp:553: int fd = open(_full_path, O_RDONLY | O_BINARY, 0);
> share/memory/filemap.cpp:588: int fd = open(_full_path, O_RDWR | O_CREAT | O_TRUNC | O_BINARY, 0444);
> share/utilities/vmError.cpp:1197: fd = open(buf, O_RDWR | O_CREAT | O_EXCL, 0666);
> share/utilities/ostream.cpp:563: _fd = open(file_name, O_WRONLY | O_CREAT | O_TRUNC, 0666);
>
> share/ci/ciEnv.cpp:1256: int fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
> share/ci/ciEnv.cpp:1274: int fd = open(buffer, O_RDWR | O_CREAT | O_TRUNC, 0666);
> share/classfile/compactHashtable.cpp:201: _fd = open(filename, O_RDONLY | O_BINARY, 0);
> share/compiler/compileLog.cpp:210: int partial_fd = open(partial_file, O_RDONLY);
>
>
> This might be often fine, but in special cases we miss platform specific extensions done in os::open ,
> for example for Windows the unc/extended path handling done in os::open ( calls create_unc_path for long paths) :
>
>
> int os::open(const char *path, int oflag, int mode) {
> char* pathbuf = (char*)os::strdup(path, mtInternal);
> . . .
> os::native_path(pathbuf);
> int ret;
> if (strlen(path) < MAX_PATH) {
> ret = ::open(pathbuf, oflag | O_BINARY | O_NOINHERIT, mode);
> } else {
> errno_t err = ERROR_SUCCESS;
> wchar_t* wpath = create_unc_path(pathbuf, err);
> . . .
> ret = ::_wopen(wpath, oflag | O_BINARY | O_NOINHERIT, mode);
>
>
> Should I open a bug and replace the open calls by os::open ?
>
> Thanks , Matthias
>
>
>
More information about the hotspot-dev
mailing list