On 2/1/19 9:22 AM, Nick Gasson (Arm Technology China) wrote:
> On AArch64, if you use "jhsdb clhsdb --pid=..." to attach a debugger to 
> a Java process, and then run "jstack -v" while any thread is executing a 
> native method, you will get a NullPointerException like this:

This does not happen for me. I have a test case which runs a native
method; the native method does not return. I then run jstack -v
and get a clean stack trace, regardless of whether it's interpreted or compiled:

"main" #1 prio=5 tid=0x0000ffff7001a000 nid=0x596c runnable [0x0000ffff7624e000]
   java.lang.Thread.State: RUNNABLE
   JavaThread state: _thread_in_native
 - Spinner.main(java.lang.String[]) @bci=0, line=9, pc=0x0000ffff6d6954d8, 
Method*=0x0000ffff2321e380 (Compiled frame; information may be imprecise)

Locked ownable synchronizers:
    - None

I tries various combinations of Xcomp and tiered compilation. What did you do?

-- 
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671
#include <jni.h>
#include <stdio.h>

/*
 * Class:     Spinner
 * Method:    run
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Spinner_run
(JNIEnv *env,  jclass k) {

  printf("Spinning...\n");
  for(;;);
}


/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class Spinner */

#ifndef _Included_Spinner
#define _Included_Spinner
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     Spinner
 * Method:    run
 * Signature: ()V
 */
JNIEXPORT void JNICALL Java_Spinner_run
  (JNIEnv *, jclass);

#ifdef __cplusplus
}
#endif
#endif
public class Spinner {
    static native void run();

    static {
        System.loadLibrary("Spinner");
    }

    public static void main(String[] args) {
        run();
    }
}

Reply via email to