I am using IB Verbs and RDMA CM to implement a communication device
over InfiniBand fabric. I have executed client/server code (most part
from Roland Dreier, CISCO) and it works absolutely fine. The server listens for requests, client sends two integers to the server and server returns their sum.<br><br>When I
try to call the same thing via JNI, the code gets stuck at method
"ibv_alloc_pd()" (line 170) in the client code (nativeclient.c). I have checked the rdma_cm_id "cm_id", the ibv_context
"cm_id->verbs" and the protection domain "ibv_pd" but I am unable to
resolve the error.<br>
<br>JVM actually crashes stating that error exists at frame:
"ibv_alloc_pd" and that crash happened in native code. Though this is
understandable, but the error is not, since the same code works when
executed directly with c compiler but gives trouble with JNI.<br>
<br>Compilers:<br> java version "1.6.0_07"<br> Java(TM) SE Runtime Environment (build 1.6.0_07-b06)<br> Java HotSpot(TM) 64-Bit Server VM (build 10.0-b23, mixed mode)<br><br> gcc (GCC) 4.1.2 20071124 (Red Hat 4.1.2-42)<br>
<br>Environment:<br> Red Hat 4.12<br> 2 Intel(R) Xeon(TM) 5060 CPU dual-core hyperthreading 3.20GHz<br><br> OFED version 1.4<br><br>Compressed file (jni.tar) that contains all the files (.java, .h, .c and .log) is available at [<a href="http://hpc.niit.edu.pk/%7Ezafar/work/ib/jni.tar" target="_blank">http://hpc.niit.edu.pk/~zafar/work/ib/jni.tar</a>] for better understanding. I was hoping that someone could may be give me some pointers/suggestions in the right direction.<br>
<br>Any help will be greatly appreciated.<br><br>P.S.: Structure of the code:<br>nativeclient.c [native code for client]<br>nativeserver.c [native code for server]<br>RdmaOpsServer.java [Server code calling native server code]<br>
RdmaOpsClient.java [Client code calling native client code]<br><br>Thanks,<br>-- <br>Syed Zafar ul Hussan Gilani | BIT-7<br>Research Student | CHPSC<br>MSP 2008-09<br>NUST SEECS | <a href="http://hpc.niit.edu.pk/~zafar">http://hpc.niit.edu.pk/~zafar</a><br>