[ 
https://issues.apache.org/jira/browse/DAEMON-398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16834792#comment-16834792
 ] 

Mark Thomas commented on DAEMON-398:
------------------------------------

My testing was with AdoptOpenJDK 11.0.3+7 where this issue is not reproducible.

It looks like the issue is that the Commons Daemon being testing is being built 
with a later version of Visual Studio than intended. The build tools we use for 
Commons Daemon might be rather on the old side but they are deliberately chosen 
to avoid issues like this.

 

A patch that enables this to work when compiling with a later version of Visual 
Studio would certainly be accepted. That would fall under an enhancement rather 
than a bug so I'll adjust this issue accordingly.

 

> Java 11 jvm.dll startup error messages not available on stdout/stderr
> ---------------------------------------------------------------------
>
>                 Key: DAEMON-398
>                 URL: https://issues.apache.org/jira/browse/DAEMON-398
>             Project: Commons Daemon
>          Issue Type: Bug
>          Components: Procrun
>    Affects Versions: 1.1.1
>         Environment: Windows
>            Reporter: Gerwin
>            Priority: Major
>         Attachments: set-stdout.patch
>
>
> *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
> # {code:none|title=stderr}
> Java HotSpot(TM) 64-Bit Server VM warning: Ignoring option MaxPermSize; 
> support was removed in 8.0
> Unrecognized option: -invalid
> {code}
> *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|https://jdebp.eu/FGA/redirecting-standard-io.html] (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:
> {quote}
> ... 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).
> {quote}
> * Setting registry value Log/LogJniMessages=1, which is using the 
> {{vfprintf}} option of the 
> [JNI_CreateJavaVM|https://docs.oracle.com/en/java/javase/11/docs/specs/jni/invocation.html#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.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to