On 12/07/2019 11:21, Rémy Maucherat wrote:
> On Thu, Jul 11, 2019 at 11:01 PM Rainer Jung <rainer.j...@kippdata.de
> <mailto:rainer.j...@kippdata.de>> wrote:
> 
>     Am 11.07.2019 um 22:10 schrieb Rémy Maucherat:
>     > On Thu, Jul 11, 2019 at 8:42 PM Rainer Jung
>     <rainer.j...@kippdata.de <mailto:rainer.j...@kippdata.de>
>     > <mailto:rainer.j...@kippdata.de <mailto:rainer.j...@kippdata.de>>>
>     wrote:
>     >
>     >     Hi Rémy,
>     >
>     >     When one looks up the macros in native/include/tcn.h, this boils
>     >     down to
>     >     the following returning null:
>     >
>     >     (*env)->FindClass(env, "org/apache/tomcat/jni/FileInfo")
>     >
>     >     So our own FileInfo class can not be found. FindClass docs
>     indicate its
>     >     searched in the CLASSPATH although I'm not sure whether its
>     really the
>     >     classpath or some search paths of a class loader hierarchy.
>     >
>     >     You might want to add the JVM commandline flag
>     "-verbose:class" for any
>     >     easy way to track class loading.
>     >
>     >     I didn't really grok what you meant with "define in JNI
>     configuration".
>     >     For normal JVMs the code just works, so what might be special
>     for Graal
>     >     that org.apache.tomcat.jni.FileInfo can't be found?
>     >
>     >
>     > A Graal native image is indeed not a normal JVM and does not
>     support any
>     > kind of dynamic class loading, it has to be declared first in these
>     > configuration files.
> 
>     Ah OK.
> 
>     > So I am adding this to the jni one:
>     > { "name":"org.apache.tomcat.jni.FileInfo" },
>     > { "name":"org.apache.tomcat.jni.Sockaddr" },
>     > { "name":"org.apache.tomcat.jni.FileInfo" },
> 
>     Again FileInfo? I think instead "org.apache.tomcat.jni.Error" should be
>     the third one.
> 
>     > { "name":"java.lang.String", "methods" :
>     >
>     
> [{"name":"<init>","parameterTypes":["byte[]"]},{"name":"getBytes","parameterTypes":[]}]
> 
>     > }
>     > And loading now works.
>     > Jul 11, 2019 9:39:28 PM org.apache.catalina.core.AprLifecycleListener
>     > lifecycleEvent
>     > INFO: Loaded APR based Apache Tomcat Native library [1.2.23] using
>     APR
>     > version [1.6.5].
>     > Jul 11, 2019 9:39:28 PM org.apache.catalina.core.AprLifecycleListener
>     > lifecycleEvent
>     > INFO: APR capabilities: IPv6 [true], sendfile [true], accept filters
>     > [false], random [true].
>     > Jul 11, 2019 9:39:28 PM org.apache.catalina.core.AprLifecycleListener
>     > lifecycleEvent
>     > INFO: APR/OpenSSL configuration: useAprConnector [false],
>     useOpenSSL [true]
>     > Jul 11, 2019 9:39:28 PM org.apache.catalina.core.AprLifecycleListener
>     > initializeSSL
>     > INFO: OpenSSL successfully initialized [OpenSSL 1.1.1c FIPS  28
>     May 2019]
>     >
>     > However when trying to actually connect I got:
>     > Segmentation fault (core dumped)
>     >
>     > Oops.
> 
>     If the above duplicate class was just a copy and paste typo, but you
>     had
>     it right in your actual work, the next one could try, would be
>     activating writing core dumps in the underlying OS. The resulting core
>     should be inspectable depending on OS via gdb or similar tools. The
>     simplest gdb invocation would be
> 
>     gdb /path/to/my/bin/java /path/to/my/corefile
> 
>     and then at the gdb prompt the command
> 
>        bt
> 
>     or
> 
>        bt full
> 
>     or
> 
>        thread apply all bt
> 
>     or
> 
>        thread apply all bt full
> 
>     That way we should at least see, in which function the crash happens.
>     Depending on symbols etc. you might even get line numbers.
> 
> 
> In the native code, it crashes on:
> https://github.com/apache/tomcat-native/blob/master/native/src/ssl.c#L635
> 
> I modified the code to:
>     double d = (((double)(rand()%RAND_MAX)/RAND_MAX)*(h-l));
>     apr_snprintf(buf, sizeof(buf), "%.0f", d);
> 
> And it cores on the apr_snprintf. I don't see how it is unsafe though.
> 
> Rémy
> 

I also have the same core using the AprConnector I can't really see what
is wrong there.

gdb doesn't really help :-( I have replaced the apr_snprintf by snprintf
and I also have a core:
+++
Thread 19 "apr-8443-exec-1" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffaffff700 (LWP 24724)]
0x00007ffff792e41a in __GI___printf_fp_l (fp=<optimized out>,
loc=<optimized out>, info=<optimized out>, args=<optimized out>) at
../include/ctype.h:53
53        return __libc_tsd_address (const int32_t *, CTYPE_TOLOWER);
Missing separate debuginfos, use: dnf debuginfo-install
sssd-client-2.2.0-3.fc30.x86_64 zlib-1.2.11-15.fc30.x86_64
(gdb) bt
#0  0x00007ffff792e41a in __GI___printf_fp_l (fp=<optimized out>,
loc=<optimized out>, info=<optimized out>, args=<optimized out>) at
../include/ctype.h:53
#1  0x00007ffff7946f71 in __vfprintf_internal (s=0x7fffafffe660,
format=0x7ffff7ff05f7 "%.0f", ap=0x7fffafffe7e0, mode_flags=<optimized
out>) at vfprintf-internal.c:1644
#2  0x00007ffff7959f8a in __vsnprintf_internal (string=0x7ffff7ffa2a0
<buf> "", maxlen=<optimized out>, format=0x7ffff7ff05f7 "%.0f",
args=0x7fffafffe7e0, mode_flags=0) at vsnprintf.c:114
#3  0x00007ffff7933386 in __GI___snprintf (s=<optimized out>,
maxlen=<optimized out>, format=<optimized out>) at snprintf.c:31
#4  0x00007ffff7fe6ea4 in ssl_rand_choosenum (l=0, h=127) at src/ssl.c:720
+++
Suggestions?


-- 
Cheers

Jean-Frederic

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to