harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Egor Pasko <egor.pa...@gmail.com>
Subject Re: [drlvm] [launcher] Executable hangs
Date Wed, 27 Sep 2006 10:54:23 GMT
On the 0x1F0 day of Apache Harmony Armand Navabi wrote:
> > What is the kernel version BTW? There could be some issues with
> > 2.4.x, currently everybody works with 2.6.x
> 
> The kernel version is 2.6.17.8.
> 
> > concerning hythread_exit .. Did you resolve it already?  I see the
> > symbol _undefined_ too (and no definition of the symbol in hythread.so
> > or any other lib, although sources are fine, probably some bug in the
> > build system), but dynamic linker does not complain on my machine.
> 
> No, I did not resolve this problem.  When I try to run ./java by itself I
> see the following:
> 
> ./java: relocation error:
> /homes/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin/libhyprt.so
> : symbol hythread_exit, version HYTHR_0.1 not defined in file libhythr.so
> with link time reference
> 
> And then it hangs.  I did find that this would not happen (i.e. ./java would
> run just fine) if I overwrite libhythr.so with the libhythr.so from the
> classlib's /deploy/jdk/jre/bin directory.  Is that a safe way to resolve
> this problem?
> 
> > hm, gdb .. did you 'export' LD_LIBRARY_PATH? 
> > (sorry for the dummy question:)
> 
> No need apologize.  I'm sure in the end it will be a dummy mistake that I'm
> making.  But yes, I did export the LD_LIBRARY_PATH.  I had it first set to
> the deploy/jre/bin directory.  I also tried to set it to put
> deploy/jre/bin/default also in the path.
> 
> Let me be clear when I say I am unable to debug with gdb.  First the problem
> I am having is when I try to set a breakpoint I always see this:
> 
> (gdb) b jni.cpp:478
> No source file named jni.cpp.
> Make breakpoint pending on future shared library load? (y or [n]) y

I solve this by breaking inside launcher after VM lib is loaded, then
I break somewhere after libjitrino.so is loaded. Then I can break
anywhere :)

looks like this:
break main.c:360
r
dis
break compile_jit_a_method
c
dis
break whatever function you want

You can make it a script via GDB's 'define' and put somewhere in
~/.gdbinit, two scripts are better: first for initial run, the second
script does the same but reusing old breakpoint numbers:
dis
en 1
r
dis
en 2
c
dis

I should put that into the FAQ, obviously.

> 
> And then when I run the program it never stops at the breakpoint, though I
> see the print I have inserted in the code.  Secondly, and more importantly,
> if I try to do anything interesting, like run helloworld, gdb seems to lose
> a thread and then hang (says it Cannot find a thread.  Invalid thread
> handle).  I have to then stop it and go kill it.

this one is probably a separate issue (not connected with "future
shared library load"). Try my above suggestion, please.

> GNU gdb 6.4
> Copyright 2005 Free Software Foundation, Inc.
> GDB is free software, covered by the GNU General Public License, and you are
> welcome to change it and/or distribute copies of it under certain
> conditions.
> Type "show copying" to see the conditions.
> There is absolutely no warranty for GDB.  Type "show warranty" for details.
> This GDB was configured as "i686-pc-linux-gnu"...Using host libthread_db
> library "/lib/libthread_db.so.1".
> 
> (gdb) r helloworld
> Starting program:
> /u/u12/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin/java
> helloworld
> [Thread debugging using libthread_db enabled]
> [New Thread 16384 (LWP 11007)]
> [New Thread 32769 (LWP 11010)]
> [New Thread 16386 (LWP 11011)]
> Cannot find thread 32769: invalid thread handle
> (gdb) q
> The program is running.  Exit anyway? (y or n) y
> 
> [1]+  Stopped                 gdb ./java
> 
> 
> Thanks,
> Armand
> 
> 
> On the 0x1F0 day of Apache Harmony Armand Navabi wrote:
> > > When I try to run ./java helloworld, it just hangs and I have to kill
> > > the process.  I investigated this a little bit, and I found that it
> > > hangs on the call to FindClass (in main.c line around line 1199).   
> > > I am
> > > unable debug with gdb also, so I have resorted to printf's, and in
> > > jni.cpp, I found the definition of FindClass, and put an printf to see
> > > what class it is trying to find when it hangs.  I see the following:
> > >
> > > Line 478 in jni.cpp: inside JNICALL FindClass: java/lang/Thread
> > >
> > > Also, when I run ./java -Xtrace:em, I get the following (and it  
> > > hangs):
> > > ...
> > > EM: compile start:[JET_DPGO n=802] java/lang/Thread::join()V
> > > EM: compile done:[JET_DPGO n=802: OK] java/lang/Thread::join()V
> > > EM: compile start:[JET_DPGO n=803] java/lang/Object::wait()V
> > > EM: compile done:[JET_DPGO n=803: OK] java/lang/Object::wait()V
> > > Line 478 in jni.cpp: inside JNICALL FindClass: java/lang/Thread
> > >
> > > Again, it seems to always hang after FindClass is called for
> > > java/lang/Thread.
> > >
> > > I have tried setting LD_LIBRARY_PATH as suggested earlier.  I also  
> > > have
> > > JAVA_HOME set (and I have tried it with it unset).  Everything  
> > > seems to
> > > have the same behavior.
> > > anavabi@gator ~/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin $  
> > > echo
> > > $LD_LIBRARY_PATH
> > > /homes/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin/:/ 
> > > homes/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin/ 
> > > default
> > > anavabi@gator ~/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin $  
> > > echo
> > > $JAVA_HOME
> > > /homes/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre
> > >
> > > I am using Gentoo Linux.  Any ideas?
> > 
> > > Thanks,
> > > Armand
> > >
> > > Gregory Shimansky wrote:
> > >> On Friday 22 September 2006 14:31 Egor Pasko wrote:
> > >>
> > >>> what makes me really nervous is that I cannot debug in GDB on Linux
> > >>> (!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
> > >>>
> > >>> When GDB starts, it becomes broken right after the start:
> > >>> [New Thread 1080397952 (LWP 13879)]
> > >>> [New Thread 1083603888 (LWP 13882)]
> > >>> Cannot find user-level thread for LWP 13879: generic error
> > >>>
> > >>> Did anybody come across this problem recently? I googled a  
> > >>> little, but
> > >>> could not find any valuable comments. I remember, there was no such
> > >>> problem in older days!! Is that our new ThreadManager that does  
> > >>> things
> > >>> like this? or is it something else?
> > >>>
> > >>
> > >> I've seen in another thread. The problem with gdb is caused  
> > >> because process
> > >> reexecs itself with new environment (there is no other way known  
> > >> to tell
> > >> dynamic linker to use a library path). This is new launcher  
> > >> feature necessary
> > >> to get rid of java shell script and use a real executable.
> > >>
> > >> Ivan Volosyuk investigated the conditions when launcher performs  
> > >> execing
> > >> itself to set LD_LIBRARY_PATH and it appears (unless fixed  
> > >> recently) that you
> > >> need to set LD_LIBRARY_PATH=<HDK path>/bin/:<HDK path>/bin/

> > >> default. Don't
> > >> forget a tailing slash in the first path :)
> > >>
> > >> Anyway, to get the correct LD_LIBRARY_PATH which launcher wants  
> > >> you can get it
> > >> from /proc/`pidof java`/environ if you launch a simple java  
> > >> program and catch
> > >> its reexeced environment. If LD_LIBRARY_PATH contents is equal to  
> > >> what
> > >> launcher wants, reexecing doesn't happen and this allows normal  
> > >> debugging.
> > >>
> > >> I think we should document this since it is going to stay for a  
> > >> long time and
> > >> is really required for development on Linux.
> > >>
> > >>
> > >
> > >
> > > ---------------------------------------------------------------------
> > > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> > >
> > 
> > 
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> > 
> > 
> > 
> > ---------------------------------------------------------------------
> > Terms of use : http://incubator.apache.org/harmony/mailing.html
> > To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> > For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> > 
> > 
> 
> -- 
> Egor Pasko, Intel Managed Runtime Division
> 
> 
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> 
> 
> 
> ---------------------------------------------------------------------
> Terms of use : http://incubator.apache.org/harmony/mailing.html
> To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
> For additional commands, e-mail: harmony-dev-help@incubator.apache.org
> 
> 

-- 
Egor Pasko, Intel Managed Runtime Division


---------------------------------------------------------------------
Terms of use : http://incubator.apache.org/harmony/mailing.html
To unsubscribe, e-mail: harmony-dev-unsubscribe@incubator.apache.org
For additional commands, e-mail: harmony-dev-help@incubator.apache.org


Mime
View raw message