src/os/bsd/vm/attachListener_bsd.cpp

Print this page
rev 4897 : 7162400: Intermittent java.io.IOException: Bad file number during HotSpotVirtualMachine.executeCommand
Reviewed-by: duke

*** 435,444 **** --- 435,466 ---- thread->check_and_wait_while_suspended(); return op; } + + // Performs initialization at vm startup + // For BSD we remove any stale .java_pid file which could cause + // an attaching process to think we are ready to recieve on the + // domain socket before we are properly initialized + + void AttachListener::vm_start() { + char fn[UNIX_PATH_MAX]; + struct stat64 st; + int ret; + + snprintf(fn, UNIX_PATH_MAX, "%s/.java_pid%d", + os::get_temp_directory(), os::current_process_id()); + RESTARTABLE(::stat64(fn, &st), ret); + if (ret == 0) { + ret = ::unlink(fn); + if(ret == -1) { + debug_only(warning("failed to remove stale attach pid file at %s", fn)); + } + } + } + int AttachListener::pd_init() { JavaThread* thread = JavaThread::current(); ThreadBlockInVM tbivm(thread); thread->set_suspend_equivalent();
*** 467,481 **** // or /tmp then this is the trigger to start the attach mechanism bool AttachListener::is_init_trigger() { if (init_at_startup() || is_initialized()) { return false; // initialized at startup or already initialized } ! char path[PATH_MAX + 1]; int ret; struct stat st; ! snprintf(path, PATH_MAX + 1, "%s/.attach_pid%d", os::get_temp_directory(), os::current_process_id()); RESTARTABLE(::stat(path, &st), ret); if (ret == 0) { // simple check to avoid starting the attach mechanism when // a bogus user creates the file --- 489,503 ---- // or /tmp then this is the trigger to start the attach mechanism bool AttachListener::is_init_trigger() { if (init_at_startup() || is_initialized()) { return false; // initialized at startup or already initialized } ! char path[UNIX_PATH_MAX]; int ret; struct stat st; ! snprintf(path, UNIX_PATH_MAX, "%s/.attach_pid%d", os::get_temp_directory(), os::current_process_id()); RESTARTABLE(::stat(path, &st), ret); if (ret == 0) { // simple check to avoid starting the attach mechanism when // a bogus user creates the file