Mercurial > hg > graal-jvmci-8
view agent/doc/cireplay.html @ 12110:4c84d351cca9
8007074: SIGSEGV at ParMarkBitMap::verify_clear()
Summary: Replace the broken large pages implementation on Linux. New flag: -XX:+UseTransparentHugePages - Linux specific flag to turn on transparent huge page hinting with madvise(..., MAP_HUGETLB). Changed behavior: -XX:+UseLargePages - tries to use -XX:+UseTransparentHugePages before trying other large pages implementations (on Linux). Changed behavior: -XX:+UseHugeTLBFS - Use upfront allocation of Large Pages instead of using the broken implementation to dynamically committing large pages. Changed behavior: -XX:LargePageSizeInBytes - Turned off the ability to use this flag on Linux and provides warning to user if set to a value different than the OS chosen large page size. Changed behavior: Setting no large page size - Now defaults to use -XX:UseTransparentHugePages if the OS supports it. Previously, -XX:+UseHugeTLBFS was chosen if the OS was configured to use large pages.
Reviewed-by: tschatzl, dcubed, brutisso
author | stefank |
---|---|
date | Fri, 16 Aug 2013 13:22:32 +0200 |
parents | 7b23cb975cf2 |
children |
line wrap: on
line source
<html> <head> <title> Replay </title> </head> <body> <h1>Compiler replay</h1> <p> The compiler replay is a function to repeat the compiling process from a crashed java process in compiled method<br> This function only exists in debug version of VM </p> <h2>Usage</h2> <pre> First, use SA to attach to the core file, if succeeded, do hsdb> dumpreplaydata <address> | -a | <thread_id> [> replay.txt] create file replay.txt, address is address of Method, or nmethod(CodeBlob) hsdb> buildreplayjars [all | boot | app] create files: all: app.jar, boot.jar boot: boot.jar app: app.jar exit SA now. Second, use the obtained replay text file, replay.txt and jar files, app.jar and boot.jar, using debug version of java java -Xbootclasspath/p:boot.jar -cp app.jar -XX:ReplayDataFile=<datafile> -XX:+ReplayCompiles .... This will replay the compiling process. With ReplayCompiles, the replay will recompile all the methods in app.jar, and in boot.jar to emulate the process in java app. notes: 1) Most time, we don't need the boot.jar which is the classes loaded from JDK. It will be only modified when an agent(JVMDI) is running and modifies the classes. 2) If encounter error as "<flag>" not found, that means the SA is using a VMStructs which is different from the one with corefile. In this case, SA has a utility tool vmstructsdump which is located at agent/src/os/<os>/proc/<os_platform> Use this tool to dump VM type library: vmstructsdump libjvm.so > <type_name>.db set env SA_TYPEDB=<type_name>.db (refer different shell for set envs)