On Thu, 12 Sep 2024 23:11:31 GMT, Justin Lu <j...@openjdk.org> wrote:
>> Please review this PR which restores the correct exception message when the >> current working directory can not be found during java startup in >> `initPhase1`. >> >> Both MacOS and Linux are expected to fail with `java.lang.Error: Properties >> init: Could not determine current working directory` if the _user.dir_ >> system property cannot be initialized. Currently, MacOS now fails with >> `java.lang.InternalError: platform encoding not initialized` and Linux fails >> with `java.lang.InternalError: null property: user.dir` which are both >> unexpected messages. >> >> In `System.c`, >> `Java_jdk_internal_util_SystemProps_00024Raw_platformProperties` calls >> `GetJavaProperties(JNIEnv *env)` which throws an internal error (with an >> appropriate message) for Unix platforms when the current working directory >> cannot be found. However, this exception is never checked and thus >> unexpected failures occur later. NULL should be returned after the exception >> is thrown, so that the initialization fails with the expected error when the >> return value is checked. >> >> >> // Get the platform specific values >> sprops = GetJavaProperties(env); >> CHECK_NULL_RETURN(sprops, NULL); >> >> >> Testing done locally on both platforms. > > Justin Lu has updated the pull request incrementally with one additional > commit since the last revision: > > return null in exception site instead Curiously in the Windows implementation of `GetJavaProperties(...)` in `java_props_md.c` in case of a failure to get the current working directory, we seem to just skip setting the working directory and don't raise any error: /* Current directory */ { WCHAR buf[MAX_PATH]; if (GetCurrentDirectoryW(sizeof(buf)/sizeof(WCHAR), buf) != 0) sprops.user_dir = _wcsdup(buf); } ------------- PR Comment: https://git.openjdk.org/jdk/pull/20975#issuecomment-2348157528