Problem with the initialization of global objects in shared libraries on AIX

Steve Poole spoole at linux.vnet.ibm.com
Sun Sep 30 04:19:27 PDT 2012


hi Volker - sorry fo delay in responding . J1 and all that. 

I dont know why your seeing what your seeing but I can at  least try to reproduce the problem.
What do you do to trigger the failure and what do you see as a result?


On 27 Sep 2012, at 15:33, Volker Simonis <volker.simonis at gmail.com> wrote:

> Hi,
> 
> I'm having a real strange problem with the initialization of global
> objects in our HotSpot port  (libjvm.so) on AIX:
> 
> CodeHeap * CodeCache::_heap = new CodeHeap();
> 
> void CodeCache::initialize() {
>  if (!_heap->reserve(...)) {
> ...
> 
> The problem is that 'CodeCache::_heap' is a global variable which
> should be initialized at the time when 'CodeCache::initialize()' is
> called.
> But in our OpenJDK port of the libjvm.so it isn't. Its actually NULL
> and the VM crashes. I'm also seeing this lack of initialization for
> globals in different compilation units from libjvm.so.
> 
> In our internal SAP JVM version, we have exactly the same code and it
> works. I try to build the OpenJDK version with exactly the same
> command line flags so I really don't see the difference (we're using
> xlc 10 on AIX 5.3). C++ files are compiled with 'xlC_r -q64
> -qpic=large -qlanglvl=extc99 -qnortti -qnoeh', the shared library
> (libjvm.so) is linked with 'xlC_r -q64  -b64 -bexpall -G -bnoentry
> -qmkshrobj -brtl -bnolibpath -Wl,-lC_r -lm -ldl -lpthread' and the
> java executable is linked with  'xlc_r -b64 -brtl -bnolibpath -liconv
> -lpthread'.
> 
> Any idea what can cause this strange problem?
> 
> Thank you and best regards,
> Volker
> 



More information about the ppc-aix-port-dev mailing list