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

Reply via email to