Skip to content

Releases: SAP/async-profiler

Method tracing and system-wide process sampling

13 Nov 09:24
8f7e4e1

Choose a tag to compare

v4.2

Features

Improvements

Bug fixes

Project Infrastructure

OpenTelemetry support and improved native memory profiler

25 Jul 19:30
5930966

Choose a tag to compare

v4.1

Features

Improvements

Bug fixes

Project Infrastructure

Heatmaps and Native memory profiling

02 Jul 15:37

Choose a tag to compare

v4.0

Features

Improvements

Bug fixes

  • async-profiler#1143: Crash on macOS when using thread filter
  • async-profiler#1125: Fixed parsing concurrently loaded libraries
  • async-profiler#1095: jfr print fails when a recording has empty pools
  • async-profiler#1084: Fixed Logging related races
  • async-profiler#1074: Parse both .rela.dyn and .rela.plt sections
  • async-profiler#1003: Support both tracefs and debugfs for kernel tracepoints
  • async-profiler#986: Profiling output respects loglevel
  • async-profiler#981: Avoid JVM crash by deleting JNI refs after GetMethodDeclaringClass
  • async-profiler#934: Fix crash on Zing in a native thread
  • async-profiler#843: Fix race between parsing and concurrent unloading of shared libraries
  • async-profiler#1147, async-profiler#1151: Deadlocks with jemalloc and tcmalloc profilers
  • Stack walking fixes for ARM64
  • Converter fixes for jfrsync profiles
  • Fixed parsing non-PIC executables and shared objects with non-standard section layout
  • Fixed recursion in pthread_create when using native profiling API
  • Fixed crashes on Alpine when profiling native apps
  • Fixed warnings with -Xcheck:jni
  • Fixed "Unsupported JVM" on OpenJ9 JDK 21
  • Fixed DefineClass crash on OpenJ9
  • JfrReader should handle custom events properly
  • Handle truncated JFRs

Project Infrastructure

  • Restructure and update documentation
  • Implement test framework; add new integration tests
  • Unit test framework for C++ code
  • Run CI on all supported platforms
  • Test multiple JDK versions in CI
  • Add GHA to validate license headers
  • Add Markdown checker and formatter
  • Add Issue and Pull Request templates
  • Add Contributing Guidelines and Code of Conduct
  • Run static analyzer and fix found issues (async-profiler#1034, async-profiler#1039, async-profiler#1049, async-profiler#1051, async-profiler#1098)
  • Provide Dockerfile for building async-profiler release packages
  • Publish nightly builds automatically

v3.0.2

20 Jan 21:03
d1498a6

Choose a tag to compare

Another SAP interim release that contains latest patches and works on JDK23.

v3.0.1

10 Oct 14:55
37ff942

Choose a tag to compare

SAP interim release that works with JDK23.

Binary launcher and AsyncGetCallTrace replacement

04 Sep 20:58
4e441b4

Choose a tag to compare

v3.0

Features

Improvements

Bug fixes

  • Workaround macOS crashes in SafeFetch
  • Fixed attach to OpenJ9 on macOS
  • Support UseCompressedObjectHeaders aka Lilliput
  • Fixed allocation profiling on JDK 20.0.x
  • Fixed context-switches profiling
  • Prefer ObjectSampler to TLAB hooks for allocation profiling
  • Improved accuracy of ObjectSampler in --total mode
  • Make Flame Graph status line and search results always visible
  • loop and timeout options did not work in some modes
  • Restart interrupted poll/epoll_wait syscalls
  • Fixed stack unwinding issues on ARM64
  • Workaround for stale jmethodIDs
  • Calculate ELF base address correctly
  • Do not dump redundant threads in a JFR chunk
  • check action prints result to a file
  • Annotate JFR unit types with @ContentType

Maintenance release

08 Dec 00:45
3e1e1c6

Choose a tag to compare

v2.5.1

Bug fixes

  • Prevent early unloading of libasyncProfiler.so
  • Read kernel symbols only for perf_events
  • Escape backslashes in flame graphs
  • Avoid duplicate categories in jfrsync mode
  • Fixed stack overflow in RedefineClasses
  • Fixed deadlock when flushing JFR

Improvements

  • Support OpenJDK C++ Interpreter (aka Zero)
  • Allow reading incomplete JFR recordings

macOS/ARM64 port and many JFR improvements

07 Dec 08:53

Choose a tag to compare

v2.5

Features

  • macOS/ARM64 (aka Apple M1) port
  • PPC64LE port (contributed by @ghaug)
  • Profile low-privileged processes with perf_events (contributed by @Jongy)
  • Raw PMU events; kprobes & uprobes
  • Dump results in the middle of profiling session
  • Chunked JFR; support JFR files larger than 2 GB
  • Integrate async-profiler events with JDK Flight Recordings

Improvements

  • Use RDTSC for JFR timestamps when possible
  • Show line numbers and bci in Flame Graphs
  • jfr2flame can produce Allocation and Lock flame graphs
  • Flame Graph title depends on the event and --total
  • Include profiler logs and native library list in JFR output
  • Lock profiling no longer requires JVM symbols
  • Better container support
  • Native function profiler can count the specified argument
  • An option to group threads by scheduling policy
  • An option to prepend library name to native symbols

Notes

  • macOS build is provided as a fat binary that works both on x86-64 and ARM64
  • 32-bit binaries are no longer shipped. It is still possible to build them from sources
  • Dropped JDK 6 support (may still work though)

Maintenance release

06 Dec 15:46

Choose a tag to compare

v1.8.7

Bug fixes

  • Workaround for JDK-8173361
  • Backported fix for "Accept timed out" exception

Maintenance release

06 Dec 15:44

Choose a tag to compare

v1.8.6

Improvements

  • log=none option to suppress warnings about missing JVM symbols
  • Sign macOS binaries

Bug fixes

  • Workaround for JDK-8212160