I noticed that the SA's dumpreplaydata command fails with: java.lang.AssertionError: CLHSDB wasn't run successfully: Opening core file, please wait... hsdb> Exception in thread "main" java.lang.InternalError: ciMetadata does not appear to be polymorphic
with a simple test program. This happens because the SA can't find the vtable symbol for ciMetadata (build produced by gcc 9.2.1). AFAIU, there's nothing in our build system that hides that symbol. I had to move one method's definition from the header file to the cpp file for the symbol to be visible again. We have a test that checks dumpreplaydata but it doesn't catch that problem. The test produces a replay file from a core file with the SA by running a simple test with -Xcomp and CICrash=1. So the replay data has very little or no profile data (which is what causes the problem above). I propose running a slightly more complicated test method and crashing after the method has had time to run for long enough to collect profile data. The other shortcoming of the test is that it doesn't look at the content of the replay file. It only warns if they differ. The replay file produced by the VM and the one produced by the SA should be identical (except for comment lines). So I propose we check that. Finally, I can't run that test on my system because core files are handled by systemd (I'm running some recent version of fedora). I suppose, the system can be configured differently but having the test work out the box is nice. I extended the test case to handle that. With the improved test, there are a few differences between the VM and SA replay files caused by VM changes that were not mirrored in the SA. I fixed those. ------------- Commit messages: - whitespaces - SA fixes - VM fix - test Changes: https://git.openjdk.java.net/jdk/pull/2195/files Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2195&range=00 Issue: https://bugs.openjdk.java.net/browse/JDK-8260296 Stats: 195 lines in 13 files changed: 153 ins; 3 del; 39 mod Patch: https://git.openjdk.java.net/jdk/pull/2195.diff Fetch: git fetch https://git.openjdk.java.net/jdk pull/2195/head:pull/2195 PR: https://git.openjdk.java.net/jdk/pull/2195