There is a document in the hotspot repository
hotspot/agent/doc/transported_core.html which talks about the
transported cores and the use of SA_ALTROOT.
" The best possible way to debug a transported core dump is to
match the
debugger machine to that of core dump machine. i.e., have same Kernel
and libthread patch level between the machines. mdb (Solaris modular
debugger) may be used to find the Kernel patch level of core dump
machine and debugger machine may be brought to the same level.
If the matching machine is "far off" in your network, then
* consider using rlogin and CLHSDB - SA command line HSDB interface
<http://cafebabe.uk.oracle.com/lxr/source/hotspot/agent/doc/clhsdb.html>
or
* use SA remote debugging and debug the core from core machine
remotely.
But, it may not be feasible to find matching machine to debug. If so,
you can copy all application shared objects (and libthread_db.so, if
needed) from the core dump machine into your debugger machine's
directory, say, /export/applibs. Now, set *SA_ALTROOT* environment
variable to point to /export/applibs directory. Note that
/export/applibs should either contain matching 'full path' of
libraries.
i.e., /usr/lib/libthread_db.so from core machine should be under
/export/applibs/use/lib directory and
/use/java/jre/lib/sparc/client/libjvm.so from core machine should be
under /export/applibs/use/java/jre/lib/sparc/client so on or
/export/applibs should just contain libthread_db.so, libjvm.so etc.
directly. "
" On Linux, SA parses core and shared library ELF files. SA *does
not*
use libthread_db.so or rtld_db.so for core dump debugging (although
libthread_db.so is used for live process debugging). But, you may
still
face problems with transported core dumps, because matching shared
objects may not be in the path(s) specified in core dump file. To
workaround this, you can define environment variable *SA_ALTROOT*
to be
the directory where shared libraries are kept. The semantics of this
env. variable is same as that for Solaris (please refer above)."
So, if SA_ALTROOT is specified, libraries from this path should get
loaded and not from the path embedded in the core file.
Thanks,
Poonam
David
-----
Thanks,
Poonam
--