The change below in Defs-bsd.gmk causes the loading of the spurious copy of libjvm. -- John
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) #