On Wed, 18 Mar 2026 17:10:43 GMT, David Beaumont <[email protected]> wrote:
>> Test java/lang/ProcessBuilder/Basic.java fails with 'Exception: >> java.lang.Error: PATH search algorithm" >> The tests in ProcessBuilder.Basic related to PATH search algorithm use the >> system binaries for /bin/true and /bin/false. >> The tests proceed to copy the binaries to different directories on carefully >> constructed PATHs and verify the correct one is found. >> On some Linux OS's the binaries for /bin/true and /bin/false are the same >> binary. Distinguished only by arg[0] when executed. >> On Ubuntu 25-10, copying the binary to `prog` and launching it, results in >> the exit status not being the expected value. >> Musl and Apline systems have other limitations that are already reflected in >> special cases. >> A solution proposed here is to provide separate binaries for the true and >> false functions so their invocation is more controlled. >> >> Use native BasicTrue and BasicFalse executables in cases where /bin/true and >> /bin/false are not unique. > > test/jdk/java/lang/ProcessBuilder/Basic.java line 2571: > >> 2569: >> 2570: // Path where "sleep" program may be found" or null >> 2571: private static final File SLEEP_PATH = initSleepPath(); > > Slightly surprised to see a change going from `Path` to `File`? > Is there a reason `File` is better here? Path isn't needed, all of the executables can only be on the default file system and are just the string executable names. That's what File does best with the lowest overhead. Its also more convenient to the interactions between the APIs in ProcessBuilder (it does not do Paths). ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/30150#discussion_r2955878357
