On Sat, Mar 19, 2011 at 09:33:11PM -0700, John Rose wrote:
> The change below in Defs-bsd.gmk causes the loading of the spurious copy of 
> libjvm.  -- John

Thanks John!  Unfortunately it looks like this is needed on FreeBSD or the
new shared library validation breaks.  I've committed a change that undoes
the rpath addition on MacOS X only.  Works for me.

> On Mar 19, 2011, at 7:02 PM, John Rose wrote:
> 
> > The root problem appears to be that libjvm is mapped twice.  The second 
> > mapping is used by native methods.  The first execution of 
> > Thread.currentThread() binds to the uninitialized second copy of 
> > JVM_CurrentThread (jvm.cpp) which accesses an uninitialized table _sp_map 
> > to get Thread::current().  A broken _sp_map drops the JVM.
> > 
> > There have been launcher changes in the last several weeks.  Perhaps they 
> > have caused the double mapping.  Or maybe that was happening all along, but 
> > now it has become problematic.
> > 
> > By the way, the double mapping does not happen with "gamma" (non-launcher 
> > debug executable), which is why I suspect the launcher.
> > 
> > -- John
> 
> diff --git a/make/common/Defs-bsd.gmk b/make/common/Defs-bsd.gmk
> --- a/make/common/Defs-bsd.gmk
> +++ b/make/common/Defs-bsd.gmk
> @@ -297,7 +297,7 @@
>  # the library itself should not.
>  #
>  VM_NAME         = server
> -JVMLIB          = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
> +JVMLIB          = -Xlinker -rpath -Xlinker $(LIBDIR)/$(LIBARCH)/$(VM_NAME) 
> -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
>  JAVALIB         = -ljava $(JVMLIB)
>  
>  #
> 
> 

> 


-- 
Greg Lewis                          Email   : gle...@eyesbeyond.com
Eyes Beyond                         Web     : http://www.eyesbeyond.com
Information Technology              FreeBSD : gle...@freebsd.org

Reply via email to