Bug 1219: Sporadic failure to determine 'executable temp base directory' on Windows using 'exe-windows-i586-268b.bin' (Fix attempt #1) Replacing the tiny 268 byte sized 'exe-windows-i586-268b.bin' PE file w/ a regular 2048 byte sized PE file 'exe-windows-i386-2048b.bin'. File is produced via: c:\mingw\bin\gcc -nodefaultlibs -nostdlib -s -Os -o tiny.exe tiny.c Adding the 305 byte sized gzipped version 'exe-windows-i386-2048b.bin.305b.gz' to the gluegen-rt jar file to reduce the payload for non Windows platforms. Adding special property 'jogamp.debug.IOUtil.Exe' to debug testing the exe file, enable via '-Djogamp.debug.IOUtil.Exe'. Passes here on all Windows machines, however, the prev. one worked here as well.
Bug 1219: Use Win32 API for test PE exe, not console Previous test PE exe, commit 0ebc5398fa20d23214a37dc4930a1fa1617293c7, was a console exe. A console exe opens a new console window if not being launched from one. New test PE exe is produced w/ '-mwindows', i.e. for Win32 API w/o a console.
Bug 1219: IOUtil.testDirExe: Satisfactory when executed, more debug options IOUtil.testDirExe(): - Satisfactory when executed Failure to execute produce an IOException right at ProcessBuilder.start(). Hence we can allow an unexpected process exit value, since we only want to learn whether executable files are allowed. - More debug options DEBUG_EXE: 'jogamp.debug.IOUtil.Exe' DEBUG_EXE_NOSTREAM: 'jogamp.debug.IOUtil.Exe.NoStream' - if DEBUG_EXE - a pre-existing 'jogamp_exe_tst'+<SUFFIX> will be used as-is. - the test-exe will not be deleted - StreamMonitor is being used to dump stdout/stderr if !DEBUG_EXE_NOSTREAM.
Bug 1219: Fix IOUtil.StreamMonitor EOS handling - Make StreamMonitor a daemon thread, i.e. not hindering VM from exit - Earmark each InputStream's EOS state and only attempt to readByte if !eos - End loop and hence the thread if all InputStream have reached EOS. - Don't close the InputStream. Closing the InputStream is expected to be done by the owner, otherwise no EOS could even be reached! - Flush the output PrintStream at thread exit
Bug 1219: IOUtil.testDirExe: Disable 'existingExe' DEBUG_EXE feature by hardcoded 'DEBUG_EXE_EXISTING_FILE = false' This is required for security, i.e. not allowing to execute any pre-existing files! In case we need to manually debug this issue, we can re-enable it manually and locally, but not in public builds!
Bug 1219: IOUtil.testDirExe: Issue Process.destroy() in finalize block to ensure launched native exe process terminates. See Bug 1219 comment 58: It seems that on some Windows platforms the launched native process using our test-exe keeps running even though we issued Process.waitFor(). Hence we issue Process.destroy() in the finalize block to at least attempt to terminate it. Note: The Process implementation is platform specific and may vary.
Bug 1231: Add Windows x86_64 test executable ; Use 'WinMain' for Windows test-executable ; Use CustomInflate for Performance - Use 'WinMain' for Windows test-executable This may have little difference than using std 'main' entry - Add Windows x86_64 test executable Since the reporter claims the test executable works well on Windows i386, maybe utilizing a x86_64 test executable on same VM fixes the issue - Use CustomInflate for Performance - Skips GZIP header - Adds own custom header [magic, deflate-size, inflate-size] - Own header allows simplified I/O read and deflation
Bug 1237 - Clarify IOUtil.getResource(..) for better efficiency, i.e. allow caller to skip relative futile lookup IOUtil.getResource(..) and IOUtil.ClassResources, needs more clarity. ClassLoader shall be passed explicitly next to the optional relative context Class instance. This allows better efficiency, i.e. caller can pass ClassLoader but skip a possible relative lookup, if not existing.
Bug 1243 - Fix IOUtil.cleanPathString(..) special case ; Allow IOUtil and Uri to handle relative path Fix IOUtil.cleanPathString(..) special case: Special case '/a/./../b' -> '/b' requires to resolve './' before '../'. Allow IOUtil and Uri to handle relative path: - IOUtil.getParentOf(..) - IOUtil.cleanPathString(..) Handle cases: 'a/./../b' -> 'b' '.././b' -> '../b' - Uri: Handle null scheme
Bump semver to commit 4f50b49c955f2bde2bb7eb4c7493206ec6bb1f2f + Fix JLS Binary Compat: Moving methods and fields upwards for classes _and_ interfaces is OK + + - We shall also travers all interfaces upwards + - All methods and fields found upwards must be tested for compatibility as well! + + Further: + - Add class-name to Field- and MethodInfo via new intermediate AbstractMemberInfo. + The class-name is used to have allow differs to find a class move upwards! + + - Pretty printing of class move binary-compatible change