Hi Gilles,

I changed _dbg to a static variable, so that it is visible in the
library, but unfortunately still not in the symbol table.


tyr java 419 nm /usr/local/openmpi-1.9.0_64_gcc/lib64/libmpi_java.so | grep -i 
_dbg
[271]   |  1249644|     4|OBJT |LOCL |0    |18     |_dbg.14258
tyr java 420 /usr/local/gdb-7.6.1_64_gcc/bin/gdb
GNU gdb (GDB) 7.6.1
...
(gdb) attach 13019
Attaching to process 13019
[New process 13019]
Retry #1:
Retry #2:
Retry #3:
Retry #4:
0x7eadcb04 in ?? ()
(gdb) symbol-file /usr/local/openmpi-1.9.0_64_gcc/lib64/libmpi_java.so
Reading symbols from 
/export2/prog/SunOS_sparc/openmpi-1.9.0_64_gcc/lib64/libmpi_java.so.0.0.0...done.
(gdb) set var _dbg.14258=0
No symbol "_dbg" in current context.
(gdb) 


Kind regards

Siegmar




> unfortunately I didn't get anything useful. It's probably my fault,
> because I'm still not very familiar with gdb or any other debugger.
> I did the following things.
> 
> 
> 1st window:
> -----------
> 
> tyr java 174 setenv OMPI_ATTACH 1
> tyr java 175 mpijavac InitFinalizeMain.java 
> warning: [path] bad path element
>   "/usr/local/openmpi-1.9.0_64_gcc/lib64/shmem.jar":
>   no such file or directory
> 1 warning
> tyr java 176 mpiexec -np 1 java InitFinalizeMain
> 
> 
> 
> 2nd window:
> -----------
> 
> tyr java 379 ps -aef | grep java
> noaccess  1345     1   0   May 22 ?         113:23 /usr/java/bin/java -server 
> -Xmx128m -XX:+UseParallelGC 
-XX:ParallelGCThreads=4 
>   fd1026  3661 10753   0 14:09:12 pts/14      0:00 mpiexec -np 1 java 
> InitFinalizeMain
>   fd1026  3677 13371   0 14:16:55 pts/2       0:00 grep java
>   fd1026  3663  3661   0 14:09:12 pts/14      0:01 java -cp 
/home/fd1026/work/skripte/master/parallel/prog/mpi/java:/usr/local/jun
> tyr java 380 /usr/local/gdb-7.6.1_64_gcc/bin/gdb
> GNU gdb (GDB) 7.6.1
> ...
> (gdb) attach 3663
> Attaching to process 3663
> [New process 3663]
> Retry #1:
> Retry #2:
> Retry #3:
> Retry #4:
> 0x7eadcb04 in ?? ()
> (gdb) symbol-file /usr/local/openmpi-1.9.0_64_gcc/lib64/libmpi_java.so
> Reading symbols from 
> /export2/prog/SunOS_sparc/openmpi-1.9.0_64_gcc/lib64/libmpi_java.so.0.0.0...done.
> (gdb) set var _dbg=0
> No symbol "_dbg" in current context.
> (gdb) set var JNI_OnLoad::_dbg=0
> No symbol "_dbg" in specified context.
> (gdb) set JNI_OnLoad::_dbg=0
> No symbol "_dbg" in specified context.
> (gdb) info threads
> [New LWP 12]
> [New LWP 11]
> [New LWP 10]
> [New LWP 9]
> [New LWP 8]
> [New LWP 7]
> [New LWP 6]
> [New LWP 5]
> [New LWP 4]
> [New LWP 3]
> [New LWP 2]
>   Id   Target Id         Frame 
>   12   LWP 2             0x7eadc6b0 in ?? ()
>   11   LWP 3             0x7eadcbb8 in ?? ()
>   10   LWP 4             0x7eadcbb8 in ?? ()
>   9    LWP 5             0x7eadcbb8 in ?? ()
>   8    LWP 6             0x7eadcbb8 in ?? ()
>   7    LWP 7             0x7eadcbb8 in ?? ()
>   6    LWP 8             0x7ead8b0c in ?? ()
>   5    LWP 9             0x7eadcbb8 in ?? ()
>   4    LWP 10            0x7eadcbb8 in ?? ()
>   3    LWP 11            0x7eadcbb8 in ?? ()
>   2    LWP 12            0x7eadcbb8 in ?? ()
> * 1    LWP 1             0x7eadcb04 in ?? ()
> (gdb) 
> 
> 
> 
> It seems that "_dbg" is unknown and unavailable.
> 
> tyr java 399 grep _dbg 
> /export2/src/openmpi-1.9/openmpi-dev-124-g91e9686/ompi/mpi/java/c/*
> /export2/src/openmpi-1.9/openmpi-dev-124-g91e9686/ompi/mpi/java/c/mpi_MPI.c:  
>       volatile int _dbg = 1;
> /export2/src/openmpi-1.9/openmpi-dev-124-g91e9686/ompi/mpi/java/c/mpi_MPI.c:  
>       while (_dbg) poll(NULL, 0, 1);
> tyr java 400 nm /usr/local/openmpi-1.9.0_64_gcc/lib64/*.so | grep -i _dbg
> tyr java 401 nm /usr/local/openmpi-1.9.0_64_gcc/lib64/*.so | grep -i 
> JNI_OnLoad
> [1057]  |              139688|                 444|FUNC |GLOB |0    |11     
> |JNI_OnLoad
> tyr java 402 
> 
> 
> 
> How can I set _dbg to zero to continue mpiexec? I also tried to
> set a breakpoint for function JNI_OnLoad, but it seems, that the
> function isn't called before SIGSEGV.
> 
> 
> tyr java 177 unsetenv OMPI_ATTACH 
> tyr java 178 /usr/local/gdb-7.6.1_64_gcc/bin/gdb mpiexec
> GNU gdb (GDB) 7.6.1
> ...
> (gdb) b mpi_MPI.c:JNI_OnLoad
> No source file named mpi_MPI.c.
> Make breakpoint pending on future shared library load? (y or [n]) y
> 
> Breakpoint 1 (mpi_MPI.c:JNI_OnLoad) pending.
> (gdb) run -np 1 java InitFinalizeMain 
> Starting program: /usr/local/openmpi-1.9.0_64_gcc/bin/mpiexec -np 1 java 
> InitFinalizeMain
> [Thread debugging using libthread_db enabled]
> [New Thread 1 (LWP 1)]
> [New LWP    2        ]
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  SIGSEGV (0xb) at pc=0xffffffff7ea3c7f0, pid=3518, tid=2
> ...
> 
> 
> 
> tyr java 381 cat InitFinalizeMain.java 
> import mpi.*;
> 
> public class InitFinalizeMain
> {
>   public static void main (String args[]) throws MPIException
>   {
>     MPI.Init (args);
>     System.out.print ("Hello!\n");
>     MPI.Finalize ();
>   }
> }
> 
> 
> SIGSEGV happens in MPI.Init(args), because I can print a message
> before I call the method.
> 
> tyr java 192 unsetenv OMPI_ATTACH
> tyr java 193 mpijavac InitFinalizeMain.java
> tyr java 194 mpiexec -np 1 java InitFinalizeMain
> Before MPI.Init()
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  SIGSEGV (0xb) at pc=0xffffffff7ea3c7f0, pid=3697, tid=2
> ...
> 
> 
> 
> Any ideas, how I can continue? I couldn't find a C function for
> MPI.Init() in a C file. Do you know, which function is called first,
> so that I can set a breakpoint? By the way, I get the same error
> for Solaris 10 x86_64.
> 
> tyr java 388 ssh sunpc1
> ...
> sunpc1 java 106 mpijavac InitFinalizeMain.java
> sunpc1 java 107 uname -a
> SunOS sunpc1 5.10 Generic_147441-21 i86pc i386 i86pc Solaris
> sunpc1 java 108 isainfo -k
> amd64
> sunpc1 java 109 mpiexec -np 1 java InitFinalizeMain
> #
> # A fatal error has been detected by the Java Runtime Environment:
> #
> #  SIGSEGV (0xb) at pc=0xfffffd7fff1d77f0, pid=20256, tid=2
> 
> 
> Thank you very much for any help in advance.
> 
> Kind regards
> 
> Siegmar
> 
> 
> 
> > thank you very much for your help.
> > 
> > > how did you configure openmpi ? which java version did you use ?
> > > 
> > > i just found a regression and you currently have to explicitly add
> > > CFLAGS=-D_REENTRANT CPPFLAGS=-D_REENTRANT
> > > to your configure command line
> > 
> > I added "-D_REENTRANT" to my command.
> > 
> > ../openmpi-dev-124-g91e9686/configure 
> > --prefix=/usr/local/openmpi-1.9.0_64_gcc \
> >   --libdir=/usr/local/openmpi-1.9.0_64_gcc/lib64 \
> >   --with-jdk-bindir=/usr/local/jdk1.8.0/bin \
> >   --with-jdk-headers=/usr/local/jdk1.8.0/include \
> >   JAVA_HOME=/usr/local/jdk1.8.0 \
> >   LDFLAGS="-m64" CC="gcc" CXX="g++" FC="gfortran" \
> >   CFLAGS="-m64 -D_REENTRANT" CXXFLAGS="-m64" FCFLAGS="-m64" \
> >   CPP="cpp" CXXCPP="cpp" \
> >   CPPFLAGS="-D_REENTRANT" CXXCPPFLAGS="" \
> >   --enable-mpi-cxx \
> >   --enable-cxx-exceptions \
> >   --enable-mpi-java \
> >   --enable-heterogeneous \
> >   --enable-mpi-thread-multiple \
> >   --with-threads=posix \
> >   --with-hwloc=internal \
> >   --without-verbs \
> >   --with-wrapper-cflags="-std=c11 -m64" \
> >   --enable-debug \
> >   |& tee log.configure.$SYSTEM_ENV.$MACHINE_ENV.64_gcc
> > 
> > I use Java 8.
> > 
> > tyr openmpi-1.9 112 java -version
> > java version "1.8.0"
> > Java(TM) SE Runtime Environment (build 1.8.0-b132)
> > Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
> > tyr openmpi-1.9 113 
> > 
> > Unfortunately I still get a SIGSEGV with openmpi-dev-124-g91e9686.
> > I have applied your patch and will try to debug my small Java
> > program tomorrow or next week and then let you know the result.
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users
> Link to this post: 
> http://www.open-mpi.org/community/lists/users/2014/10/25581.php

Reply via email to