Details
-
Bug
-
Status: Reopened
-
Major
-
Resolution: Unresolved
-
1.1.1
-
None
-
None
-
Windows
Description
Steps to reproduce
- Install Java 11
- Install prunsrv.exe using jvm.dll and specify stdout and stderr file.
- Using prunmgr, add a Java Option '-invalid'
- Start the service
- stdout and stderr files are empty!
- Install Java 10
- Using prunmgr, switch the Java Virtual Machine to Java 10
- Start the service
- stderr
Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0 Unrecognized option: -invalid
Analysis
- It works for Java 8, 9 and 10, fails for 11, 12 and 13-ea.
- I followed this guide: Redirecting standard I/O from within a program (see set-stdout.patch), but it didn't help.
- Even when I compile prunsrv with Visual Studio 2017 15.9 (linker 14.16) and test with Java 13-ea, which is also compiled with the same version (hence using the same C-runtime library) it does not work.
- The guide ends with what the probably causing the issue:
... the one problem that remains with redirecting Win32 file handles:
It doesn't affect anything in the program using a different C runtime library (such as a third-party DLL, for example). - Setting registry value Log/LogJniMessages=1, which is using the vfprintf option of the JNI_CreateJavaVM does not help. Maybe because is is added after the user-specified Java Options?
Ideas
- Make vfprintf the first parameter
Downside of vfprintf is that it is hard to distinct between stdout and stderr. Maybe make a JNI call to System.out and System.err to be able to recognize the *File pointer and map to stdout and stderr accordingly.
And I think that javajni.c/apxJavaSetOut() should not be required. - Log a bug for OpenJDK and try to get it fixed.
OS | Daemon version (built with) | Java vendor and version (built with) | Result |
---|---|---|---|
Windows 7 | 1.1.x HEAD (9.00) | AdoptOpenJDK 11.0.3+7 (14.15) | OK |
Windows 2008R2 | 1.1.x HEAD (9.00) | AdoptOpenJDK 11.0.3+7 (14.15) | OK |
Windows 2012R2 | 1.1.x HEAD (9.00) | AdoptOpenJDK 11.0.3+7 (14.15) | OK |
Windows 2016 | 1.1.x HEAD (9.00) | AdoptOpenJDK 11.0.2+9 (12.00) | OK |
Windows 2016 | 1.1.x HEAD (9.00) | AdoptOpenJDK 11.0.3+7 (14.15) | Fail |
Note: It is assumed the OS is fully patched unless otherwise stated.
Attachments
Attachments
Issue Links
- blocks
-
TOMEE-2505 Update Commons Daemon for improved Java 11 support
- Resolved
- is duplicated by
-
DAEMON-415 Log is not written to stdout and stderr Logfiles
- Resolved
- is related to
-
DAEMON-396 LibraryPath is broken for Java 11 using Windows 10/2016
- Resolved
-
DAEMON-415 Log is not written to stdout and stderr Logfiles
- Resolved
- links to