Hi, I am able to integrate C++ and R through RInside library. However when I use a jni call as my UI is through java it crashes at C++ side. My files are
------------------------------------------------ JNICallingClass.C: JNIEXPORT void JNICALL Java_CallR_run (JNIEnv* env, jobject callr){ std::cout << "Inside JNICALL" << std::endl; testR(); std::cout << "ENd of JNICALL" << std::endl; } ------------------------------------------------- CppCall2R.C void testR(){ Rcpp::NumericVector vec(1); cout << "RInside ready" << endl; } --------------------------------------------------- JavaClass.java public class CallR{ static{ try { System.loadLibrary("callr"); } catch (UnsatisfiedLinkError e) { System.err.println("Native code library failed to load.\n" + e); System.exit(1); } } public native void run(); public static void main(String[] args){ CallR callr = new CallR(); //Runtime.getRuntime().exec("R"); callr.run(); } } ---------------------------------------------------------------------------- If I just compile the C++ code and invoke it through a main C++ class I get no error . But when I call the code from Java I get the following error: # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f9e6974ba8e, pid=5891, tid=140319087077120 # # JRE version: 6.0_31-b05 # Java VM: Java HotSpot(TM) 64-Bit Server VM (20.6-b01 mixed mode linux-amd64 compressed oops) # Problematic frame: # C [libR.so+0x11aa8e] R_gc+0x9e -------------------------------------------------------------------------------------------- The error log is : Current thread (0x00007f9e90006800): JavaThread "main" [_thread_in_native, id=5892, stack(0x00007f9e95472000,0x00007f9e95573000)] siginfo:si_signo=SIGSEGV: si_errno=0, si_code=1 (SEGV_MAPERR), si_addr=0x0000000000000018 Registers: RAX=0x0000000000000001, RBX=0x0000000000000030, RCX=0x0000000000000000, RDX=0x00007f9e900b7588 RSP=0x00007f9e95571580, RBP=0x0000000000000028, RSI=0x0000000000000000, RDI=0x0000000000000004 R8 =0x00007f9e69af9990, R9 =0x000000000000004f, R10=0x00007f9e69af9850, R11=0x00000036b327f430 R12=0x00007f9e900b7580, R13=0x0000000000000001, R14=0x0000000000000001, R15=0x00007f9e69adfc00 RIP=0x00007f9e6974ba8e, EFLAGS=0x0000000000010206, CSGSFS=0x0000000000000033, ERR=0x0000000000000004 TRAPNO=0x000000000000000e Top of Stack: (sp=0x00007f9e95571580) 0x00007f9e95571580: 0000000000000000 0000000000000001 0x00007f9e95571590: 000000000000000e 000000077b07d340 0x00007f9e955715a0: 00007f9e95571948 00007f9e6974c9ed 0x00007f9e955715b0: 000000077b07d340 00007f9e95571640 0x00007f9e955715c0: 0000000000000000 00000036b2e14915 0x00007f9e955715d0: 0000000000000001 00000036b32e495d 0x00007f9e955715e0: 00007f9e8c3f2430 000000077b07d340 0x00007f9e955715f0: 00007f9e95571640 0000000000000000 0x00007f9e95571600: 000000077b07d340 00007f9e95571948 0x00007f9e95571610: 00007f9e90006800 00007f9e8c1e9857 0x00007f9e95571620: 00007f9e95571898 00007f9e95571860 0x00007f9e95571630: 00007f9e95572700 000000077b07d340 0x00007f9e95571640: 00007f9e955718b0 00007f9e8c1e94cf 0x00007f9e95571650: 00007f9e6918ba98 0000000000000000 0x00007f9e95571660: 00007f9e6918b990 00007f9e900b5330 0x00007f9e95571670: 00007f9e900b5330 00007f9e900b5330 0x00007f9e95571680: 0000000000000000 0000000000000000 0x00007f9e95571690: 0000000000000000 00007f9e691a1ac0 0x00007f9e955716a0: 0000000000000000 0000000000000000 0x00007f9e955716b0: 0000000000000000 0000000000000000 0x00007f9e955716c0: 0000000000000000 00007f9e900b50f0 0x00007f9e955716d0: 0000000000000001 0000000000000008 0x00007f9e955716e0: 0000000000000000 0000000000000000 0x00007f9e955716f0: 0000003600000000 00007f9e900b5330 0x00007f9e95571700: 0000000000002000 00007f9e00000001 0x00007f9e95571710: 0000000000000000 0000000000000000 0x00007f9e95571720: 0000000000000000 00007f9e691a1f80 0x00007f9e95571730: 0000000000000000 0000000000000000 0x00007f9e95571740: 0000000000000000 0000000000000000 0x00007f9e95571750: 00007f9e6918bac0 0000000000000006 0x00007f9e95571760: 0000000000000000 0000000000001002 0x00007f9e95571770: 0000003600000002 0000000000000000 Instructions: (pc=0x00007f9e6974ba8e) 0x00007f9e6974ba6e: 40 04 01 85 ed 4d 89 60 08 49 89 0c 24 48 8d 0d 0x00007f9e6974ba7e: 6e dc 3a 00 4c 8d 14 01 49 8b 0a 74 4d 44 89 e8 0x00007f9e6974ba8e: 4c 8b 49 18 31 f6 c1 e0 05 89 c7 4c 89 d0 0f 1f 0x00007f9e6974ba9e: 40 00 41 83 00 01 48 89 4a 10 83 c6 01 48 89 51 Register to memory mapping: RAX=0x0000000000000001 is an unknown value RBX=0x0000000000000030 is an unknown value RCX=0x0000000000000000 is an unknown value RDX=0x00007f9e900b7588 is an unknown value RSP=0x00007f9e95571580 is pointing into the stack for thread: 0x00007f9e90006800 RBP=0x0000000000000028 is an unknown value RSI=0x0000000000000000 is an unknown value RDI=0x0000000000000004 is an unknown value R8 =0x00007f9e69af9990: <offset 0x4c8990> in /usr/lib64/R/lib/libR.so at 0x00007f9e69631000 R9 =0x000000000000004f is an unknown value R10=0x00007f9e69af9850: <offset 0x4c8850> in /usr/lib64/R/lib/libR.so at 0x00007f9e69631000 R11=0x00000036b327f430: __libc_malloc+0 in /lib64/libc.so.6 at 0x00000036b3200000 R12=0x00007f9e900b7580 is an unknown value R13=0x0000000000000001 is an unknown value R14=0x0000000000000001 is an unknown value R15=0x00007f9e69adfc00: <offset 0x4aec00> in /usr/lib64/R/lib/libR.so at 0x00007f9e69631000 Stack: [0x00007f9e95472000,0x00007f9e95573000], sp=0x00007f9e95571580, free space=1021k Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) C [libR.so+0x11aa8e] R_gc+0x9e [error occurred during error reporting (printing native stack), id 0xb] Java frames: (J=compiled Java code, j=interpreted, Vv=VM code) j CallR.run()V+0 j CallR.main([Ljava/lang/String;)V+9 v ~StubRoutines::call_stub Is there a solution for this? Roy [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.