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 Thu, 28 Sep 2006 03:58:40 GMT
On the 0x1F2 day of Apache Harmony Armand Navabi wrote:
> This did not seem to solve the problem.  It does not successfully put a
> break in main.c (says no source file main.c).

Oops, some day I made everything build in debug mode locally. And
forgot about it. Currently there is no option for that. TBD,
obviously. I do it with the patch (linux only) like this:

Index: working_vm/build/build.sh
===================================================================
--- working_vm/build/build.sh   (revision 449589)
+++ working_vm/build/build.sh   (working copy)
@@ -80,6 +80,6 @@

 # it is necessarily to compile 'vm.jitrino' in release mode

-$ANT_COMMAND -f ./make/build.xml -Dvm.jitrino.cfg=release "$@"  || ERROR
+$ANT_COMMAND -f ./make/build.xml "$@"  || ERROR


Index: working_vm/build/make/components/vm/jitrino.xml
===================================================================
--- working_vm/build/make/components/vm/jitrino.xml     (revision 449589)
+++ working_vm/build/make/components/vm/jitrino.xml     (working copy)
@@ -25,7 +25,7 @@
   -->

 <project name="vm.jitrino">
-    <target name="init">
+    <target name="init" depends="common_vm" >
         <property name="build.depends" value="extra.apr,vm.vmcore,vm.encoder" />
         <property name="outtype" value="shared" />
         <property name="libname" value="jitrino" />
@@ -50,7 +50,8 @@
         <patternset id="java.classes.pattern" includes="empty_pattern"/>

         <!-- the compiler doesn't extend common compiler -->
-        <compiler name="${build.cxx}" id="cpp.compiler">
+        <!-- compiler name="${build.cxx}" id="cpp.compiler" -->
+        <compiler id="cpp.compiler" extends="common.cpp.compiler">
             <fileset dir="${src}">
                 <include name="dynopt/*.cpp" />
                 <include name="main/*.cpp" />
Index: working_vm/build/make/targets/common_vm.xml
===================================================================
--- working_vm/build/make/targets/common_vm.xml (revision 449589)
+++ working_vm/build/make/targets/common_vm.xml (working copy)
@@ -105,6 +105,8 @@

                 <select cfg="debug">
                     <compilerarg value="-O0" />
+                    <compilerarg value="-g" />
+                    <compilerarg value="-ggdb3" />
                 </select>
             </select>

Index: working_classlib/depends/build/makefile.include
===================================================================
--- working_classlib/depends/build/makefile.include     (revision 448846)
+++ working_classlib/depends/build/makefile.include     (working copy)
@@ -28,5 +28,5 @@
 DLLPATH=$(HY_HDK)/jdk/jre/bin/
 SHAREDSUB=../shared/

-CFLAGS = -O1 $(HY_CFLAGS) -DLINUX -D_REENTRANT -DIPv6_FUNCTION_SUPPORT \
+CFLAGS = -O0 -g $(HY_CFLAGS) -DLINUX -D_REENTRANT -DIPv6_FUNCTION_SUPPORT \
          -D$(HY_ARCH_DEFINE) $(VMDEBUG) -I$(HY_HDK)/include -I$(HY_HDK)/jdk/include -I. -I$(SHAREDSUB)

Guys, I hope someone finishes that into a final solution so we can put
that to SVN. Most likely, I'll do that, when I am done with fixing
Jitrino.OPT to run the ClassLoaderTest. Any volunteering is, as
always, welcome))

> anavabi@gator ~/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin $ gdb
> ./java
> 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) break main.c:360
> No source file named main.c.
> Make breakpoint pending on future shared library load? (y or [n]) n
> (gdb) show environment
> 
> ...
> LD_LIBRARY_PATH=/homes/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin/:/homes/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre/bin/default/
> ...
> JAVA_HOME=/homes/anavabi/Harmony/enhanced/drlvm/trunk/build/deploy/jre
> ...
> 
> 
> I am able to do "break main", but I tried to do what you have explained
> below (i.e. break somewhere after libjitrino.so is loaded), but it says
> compile_jit_a_method is not defined.

Thank you for digging into it. That's really valuable. I hope we will
fix the issue soon.

> Thanks,
> Armand
> 
> Egor Pasko wrote:
> > 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
> >>
> >>
> >>     
> >
> >   
> 
> 
> ---------------------------------------------------------------------
> 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