On Fri, 1 Sep 2023 12:36:28 GMT, Matthias Baesken <mbaes...@openjdk.org> wrote:
>> We run into some BackingStoreException: Couldn't get file lock. e.g. here : >> >> [JShell] Exception in thread "main" java.lang.IllegalStateException: >> java.util.prefs.BackingStoreException: Couldn't get file lock. >> [JShell] at >> jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder$PreferencesStorage.flush(JShellToolBuilder.java:313) >> [JShell] at >> jdk.jshell/jdk.internal.jshell.tool.JShellTool$ReplayableHistory.storeHistory(JShellTool.java:692) >> [JShell] at >> jdk.jshell/jdk.internal.jshell.tool.JShellTool.start(JShellTool.java:1008) >> [JShell] at >> jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder.start(JShellToolBuilder.java:261) >> [JShell] at >> jdk.jshell/jdk.internal.jshell.tool.JShellToolProvider.main(JShellToolProvider.java:120) >> [JShell] Caused by: java.util.prefs.BackingStoreException: Couldn't get file >> lock. >> [JShell] at >> java.prefs/java.util.prefs.FileSystemPreferences.sync(FileSystemPreferences.java:769) >> [JShell] at >> java.prefs/java.util.prefs.FileSystemPreferences.flush(FileSystemPreferences.java:864) >> [JShell] at >> jdk.jshell/jdk.internal.jshell.tool.JShellToolBuilder$PreferencesStorage.flush(JShellToolBuilder.java:311) >> [JShell] ... 4 more >> >> The BackingStoreException should be enhanced e.g. by adding the >> errno/errorCode that is already available in the coding > > Matthias Baesken has updated the pull request incrementally with one > additional commit since the last revision: > > add for some errnos also the string Hi Alan , Your assumption 'I assume the use of System.getProperty is problematic when running with a SM.' is most likely correct. java.desktop/share/classes/sun/awt/FontConfiguration.java-133- protected void setOsNameAndVersion() { java.desktop/share/classes/sun/awt/FontConfiguration.java:134: osName = System.getProperty("os.name"); java.desktop/share/classes/sun/awt/FontConfiguration.java-135- osVersion = System.getProperty("os.version"); java.desktop/share/classes/sun/awt/FontConfiguration.java-136- } java.desktop/share/classes/sun/awt/FontConfiguration.java-137- -- java.management/share/classes/javax/management/loading/MLet.java-1054- // the architecture-specific path name. e.g. if user java.management/share/classes/javax/management/loading/MLet.java-1055- // requested a load for "foo" on Solaris SPARC 5.7 we try to java.management/share/classes/javax/management/loading/MLet.java-1056- // load "SunOS/sparc/5.7/lib/libfoo.so" from the JAR file. java.management/share/classes/javax/management/loading/MLet.java-1057- // java.management/share/classes/javax/management/loading/MLet.java:1058: nativelibname = removeSpace(System.getProperty("os.name")) + File.separator + java.management/share/classes/javax/management/loading/MLet.java-1059- removeSpace(System.getProperty("os.arch")) + File.separator + java.management/share/classes/javax/management/loading/MLet.java-1060- removeSpace(System.getProperty("os.version")) + File.separator + java.management/share/classes/javax/management/loading/MLet.java-1061- "lib" + File.separator + nativelibname; java.management/share/classes/javax/management/loading/MLet.java-1062- if (MLET_LOGGER.isLoggable(Level.TRACE)) { -- java.management/share/classes/sun/management/VMManagementImpl.java-223- // Operating System java.management/share/classes/sun/management/VMManagementImpl.java-224- public String getOsName() { java.management/share/classes/sun/management/VMManagementImpl.java:225: return System.getProperty("os.name"); java.management/share/classes/sun/management/VMManagementImpl.java-226- } java.management/share/classes/sun/management/VMManagementImpl.java-227- public String getOsArch() { java.management/share/classes/sun/management/VMManagementImpl.java-228- return System.getProperty("os.arch"); java.management/share/classes/sun/management/VMManagementImpl.java-229- } -- jdk.compiler/share/classes/com/sun/tools/javac/jvm/JNIWriter.java-99- jdk.compiler/share/classes/com/sun/tools/javac/jvm/JNIWriter.java-100- private Context context; jdk.compiler/share/classes/com/sun/tools/javac/jvm/JNIWriter.java-101- jdk.compiler/share/classes/com/sun/tools/javac/jvm/JNIWriter.java-102- private static final boolean isWindows = jdk.compiler/share/classes/com/sun/tools/javac/jvm/JNIWriter.java:103: System.getProperty("os.name").startsWith("Windows"); jdk.compiler/share/classes/com/sun/tools/javac/jvm/JNIWriter.java-104- -- jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-29- jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-30-public class PlatformInfo { jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-31- /* Returns "win32" if Windows; "linux" if Linux. */ jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-32- public static String getOS() throws UnsupportedPlatformException { jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java:33: String os = System.getProperty("os.name"); jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-34- if (os.equals("Linux")) { jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-35- return "linux"; jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-36- } else if (os.equals("FreeBSD")) { jdk.hotspot.agent/share/classes/sun/jvm/hotspot/utilities/PlatformInfo.java-37- return "bsd"; -- jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ExecPty.java-131- } jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ExecPty.java:132: String undef = System.getProperty("os.name").toLowerCase().startsWith("hp") ? "^-" : "undef"; jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ExecPty.java-133- for (ControlChar cchar : ControlChar.values()) { jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ExecPty.java-134- int v = attr.getControlChar(cchar); jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ExecPty.java-135- if (v >= 0 && v != current.getControlChar(cchar)) { jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/ExecPty.java-136- String str = ""; -- jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-28- jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-29- static void diag(PrintStream out) { jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-30- out.println("System properties"); jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-31- out.println("================="); jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java:32: out.println("os.name = " + System.getProperty("os.name")); jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-33- out.println("OSTYPE = " + System.getenv("OSTYPE")); jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-34- out.println("MSYSTEM = " + System.getenv("MSYSTEM")); jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-35- out.println("PWD = " + System.getenv("PWD")); jdk.internal.le/share/classes/jdk/internal/org/jline/terminal/impl/Diag.java-36- out.println("ConEmuPID = " + System.getenv("ConEmuPID")); -- jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-13-import java.nio.file.Paths; jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-14- jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-15-public class OSUtils { jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-16- jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java:17: public static final boolean IS_WINDOWS = System.getProperty("os.name").toLowerCase().contains("win"); jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-18- jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-19- public static final boolean IS_CYGWIN = IS_WINDOWS jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-20- && System.getenv("PWD") != null jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-21- && System.getenv("PWD").startsWith("/"); -- jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-38- jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-39- public static final boolean IS_CONEMU = IS_WINDOWS jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-40- && System.getenv("ConEmuPID") != null; jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-41- jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java:42: public static final boolean IS_OSX = System.getProperty("os.name").toLowerCase().contains("mac"); jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java:43: public static final boolean IS_AIX = System.getProperty("os.name").equals("AIX"); jdk.internal.le/share/classes/jdk/internal/org/jline/utils/OSUtils.java-44- -- jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-349- case LINUX: return "Linux"; jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-350- case MACOS: return "Mac OS X"; jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-351- case AIX: return "AIX"; jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-352- case WINDOWS: { jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java:353: String osName = System.getProperty("os.name"); jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-354- if (osName.startsWith("Windows")) { jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-355- // Use original value which is often more "complete" jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-356- // E.g. "Windows Server 2012" jdk.internal.vm.ci/share/classes/jdk/vm/ci/services/Services.java-357- return osName; -- jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java-148- } jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java-149- throw new FailedLoginException jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java-150- ("Failed in attempt to import the " + jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java-151- "underlying NT system identity information" + jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java:152: " on " + System.getProperty("os.name")); jdk.security.auth/share/classes/com/sun/security/auth/module/NTLoginModule.java-153- } -- jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java-128- succeeded = false; jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java-129- throw new FailedLoginException jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java-130- ("Failed in attempt to import " + jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java-131- "the underlying system identity information" + jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java:132: " on " + System.getProperty("os.name")); jdk.security.auth/share/classes/com/sun/security/auth/module/UnixLoginModule.java-133- } -- jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-83-class ZipFileSystem extends FileSystem { jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-84- // statics jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-85- @SuppressWarnings("removal") jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-86- private static final boolean isWindows = AccessController.doPrivileged( jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java:87: (PrivilegedAction<Boolean>)()->System.getProperty("os.name") jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-88- .startsWith("Windows")); jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-89- private static final byte[] ROOTPATH = new byte[] { '/' }; jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-90- private static final String PROPERTY_POSIX = "enablePosixFileAttributes"; jdk.zipfs/share/classes/jdk/nio/zipfs/ZipFileSystem.java-91- private static final String PROPERTY_DEFAULT_OWNER = "defaultOwner"; Any idea why it is done so seldom in the codebase ? ZipFileSystem.java does it, but most other calls (see above) seems to omit / 'forget' it . Is there something about the other calls, that it is not needed there ? ------------- PR Comment: https://git.openjdk.org/jdk/pull/15308#issuecomment-1702726371