Hi Siegmar,

You might need to configure with --enable-debug and add -g -O0 to your CFLAGS 
and LDFLAGS

Then once you attach with gdb, you have to find the thread that is polling :
thread 1
bt
thread 2
bt
and so on until you find the good thread
If _dbg is a local variable, you need to select the right frame before you can 
change the value :
get the frame number from bt (generally 1 under linux)
f <frame number>
set _dbg=0

I hope this helps

Gilles


Siegmar Gross <siegmar.gr...@informatik.hs-fulda.de> wrote:
>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
>
>_______________________________________________
>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/25582.php

Reply via email to