Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
d981e16
Add sanity checks for profiler (PROF-13027)
jbachorik Apr 16, 2026
8bc3963
Merge main into muse/impl-20260415-211352
jbachorik Aug 4, 2026
675b604
sphinx: address review feedback on PR #483
jbachorik Aug 4, 2026
784f877
Potential fix for pull request finding
jbachorik Aug 4, 2026
e8b443d
fix(ci): bump IBM Java 8 JRE URL to 8.0.8.70 (8.0.8.60 removed by IBM)
jbachorik Aug 4, 2026
1853124
Merge branch 'main' into muse/impl-20260415-211352
jbachorik Aug 4, 2026
d17bcd0
fix: normalize unbounded MaxMetaspaceSize by threshold, not exact SIZ…
jbachorik Aug 4, 2026
f68a10d
fix: lower CPU sanity-check cutoff to <1 core instead of <2
jbachorik Aug 4, 2026
28d3549
Merge branch 'main' into muse/impl-20260415-211352
jbachorik Aug 5, 2026
f34e0ed
Merge remote-tracking branch 'origin/main' into muse/impl-20260415-21…
jbachorik Aug 7, 2026
9563780
Merge branch 'muse/impl-20260415-211352' of origin into muse/impl-202…
jbachorik Aug 7, 2026
92fe0f4
Add memory-check smoke test and STE fixes for sanity-check comments/docs
jbachorik Aug 7, 2026
1e68b0e
Merge branch 'main' into muse/impl-20260415-211352
jbachorik Aug 10, 2026
c7d567b
fix: pin -Xms in SanityCheckTest to avoid forked JVM OOM on startup
jbachorik Aug 10, 2026
56766fc
fix: exclude GraalVM from MegamorphicCallTest itable-stub check
jbachorik Aug 10, 2026
6ecfb34
fix: force G1GC in SanityCheckTest to avoid Parallel GC's Xmx-scaled …
jbachorik Aug 10, 2026
50bde05
Fix SanityCheckTest process isolation, document cgroup v1 CPU path as…
jbachorik Aug 10, 2026
8e55219
Add -z,nodelete to debug linker args to fix J9 shutdown SIGSEGV
jbachorik Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,13 @@ object ConfigurationPresets {
config.compilerArgs.set(
listOf("-O0", "-g", "-DDEBUG") + commonLinuxCompilerArgs(version)
)
config.linkerArgs.set(commonLinuxLinkerArgs())
// -z,nodelete: same as configureRelease. Without it, the JVM (observed
// on OpenJ9's DestroyJavaVM path) can unmap this library while a
// profiler-spawned thread (via the patched pthread_create hook in
// LibraryPatcher) is still executing wrapper code inside it, causing a
// SIGSEGV with no hs_err. nodelete pins the mapping for the process's
// lifetime no matter how many times the host dlcloses it.
config.linkerArgs.set(commonLinuxLinkerArgs() + listOf("-Wl,-z,nodelete"))
}
Platform.MACOS -> {
config.compilerArgs.set(
Expand Down
16 changes: 16 additions & 0 deletions ddprof-lib/src/main/cpp/arguments.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -410,6 +410,22 @@ Error Arguments::parse(const char *args) {
}
}

CASE("nosanity")
if (value != NULL) {
switch (value[0]) {
case 'n': // no
case 'f': // false
case '0': // 0
_skip_sanity_checks = false;
break;
default:
_skip_sanity_checks = true;
}
} else {
// A bare 'nosanity' with no value skips the checks.
_skip_sanity_checks = true;
}

CASE("nativemem")
_nativemem = value == NULL ? 0 : parseUnits(value, BYTES);
if (_nativemem < 0) {
Expand Down
2 changes: 2 additions & 0 deletions ddprof-lib/src/main/cpp/arguments.h
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,7 @@ class Arguments {
bool _lightweight;
bool _enable_method_cleanup;
bool _remote_symbolication; // Enable remote symbolication for native frames
bool _skip_sanity_checks;
bool _jvmtistacks; // Delegate CPU/wall stack walks to HotSpot JFR RequestStackTrace extension
bool _nativesocket;
long _nativesocket_interval; // initial sampling period in nanoseconds; 0 = engine default
Expand Down Expand Up @@ -234,6 +235,7 @@ class Arguments {
_lightweight(false),
_enable_method_cleanup(true),
_remote_symbolication(false),
_skip_sanity_checks(false),
_jvmtistacks(false),
_nativesocket(false),
_nativesocket_interval(0),
Expand Down
6 changes: 6 additions & 0 deletions ddprof-lib/src/main/cpp/flightRecorder.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1212,6 +1212,12 @@ void Recording::writeSettings(Buffer *buf, Arguments &args) {
Log::LEVEL_NAME[Log::level()]);
writeBoolSetting(buf, T_ACTIVE_RECORDING, "hotspot", VM::isHotspot());
writeBoolSetting(buf, T_ACTIVE_RECORDING, "openj9", VM::isOpenJ9());
writeBoolSetting(buf, T_ACTIVE_RECORDING, "sanityCheckFailed",
Profiler::instance()->sanityCheckFailed());
if (Profiler::instance()->sanityCheckFailed()) {
writeStringSetting(buf, T_ACTIVE_RECORDING, "sanityCheckDetail",
Profiler::instance()->sanityCheckMessage());
}
for (auto attribute : args._context_attributes) {
writeStringSetting(buf, T_ACTIVE_RECORDING, "contextattribute",
attribute.c_str());
Expand Down
2 changes: 2 additions & 0 deletions ddprof-lib/src/main/cpp/os.h
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,8 @@ class OS {

static bool getCpuDescription(char* buf, size_t size);
static int getCpuCount();
static int getCgroupCpuMillicores();
static long getContainerMemoryLimit();
static u64 getProcessCpuTime(u64* utime, u64* stime);
static u64 getTotalCpuTime(u64* utime, u64* stime);

Expand Down
Loading
Loading