KEMBAR78
Crashes in VMX for synchronous events · Issue #1389 · async-profiler/async-profiler · GitHub
Skip to content

Crashes in VMX for synchronous events #1389

@Baraa-Hasheesh

Description

@Baraa-Hasheesh

Describe the bug

I was doing some testing for VM/VMX across different architectures & encountered some crashes for synchronous events such as MALLOC & ALLOC

#0  StackFrame::unwindStub (entry=0xf1fe03970880, name=name@entry=0xf1fe1c5408d0 "adapters", pc=@0xf1fe1b49d8e8: 266073284216960, sp=@0xf1fe1b49d8e0: 266073681812448, fp=@0xf1fe1b49d8d8: 266073703994512, this=0xf1fe1b49d8f8) at src/stackFrame_aarch64.cpp:40
40          return (uintptr_t)REG(regs[30], lr);
[Current thread is 1 (Thread 0xf1fe1b49f1a0 (LWP 14592))]
#0  StackFrame::unwindStub (entry=0xf1fe03970880, name=name@entry=0xf1fe1c5408d0 "adapters", pc=@0xf1fe1b49d8e8: 266073284216960, sp=@0xf1fe1b49d8e0: 266073681812448, fp=@0xf1fe1b49d8d8: 266073703994512, this=0xf1fe1b49d8f8) at src/stackFrame_aarch64.cpp:40
#1  0x0000f1fe1b1eac60 in StackWalker::walkVM (ucontext=ucontext@entry=0x0, frames=0xf1fe158b3a00, max_depth=2048, detail=detail@entry=VM_NORMAL, pc=<optimized out>, sp=<optimized out>, fp=<optimized out>) at src/stackWalker.cpp:370
#2  0x0000f1fe1b1f0b4c in StackWalker::walkVM (ucontext=0x0, detail=VM_NORMAL, max_depth=<optimized out>, frames=0xf1fe158b3a00) at src/stackWalker.cpp:203
#3  StackWalker::walkVM (detail=VM_NORMAL, max_depth=<optimized out>, frames=0xf1fe158b3a00, ucontext=0x0) at src/stackWalker.cpp:201
#4  Profiler::recordSample (this=0xf1fe1402cbb0, ucontext=ucontext@entry=0x0, counter=266073679010412, counter@entry=40, event_type=event_type@entry=MALLOC_SAMPLE, event=0xf1fe1b49db80, event@entry=0xf1fe1b49db60) at src/profiler.cpp:652
#5  0x0000f1fe1b1f1a6c in MallocTracer::recordMalloc (size=40, address=0xf1fe145993a0) at src/profiler.h:186
#6  MallocTracer::recordMalloc (address=0xf1fe145993a0, size=40) at src/mallocTracer.cpp:186
#7  0x0000f1fe1b1f1af0 in malloc_hook (size=40) at src/mallocTracer.cpp:37
#8  0x0000f1fe1c16f2d0 in os::malloc(unsigned long, MemTag, NativeCallStack const&) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#9  0x0000f1fe1b98a700 in AllocateHeap(unsigned long, MemTag, AllocFailStrategy::AllocFailEnum) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#10 0x0000f1fe1c23cfc8 in AdapterHandlerLibrary::new_entry(AdapterFingerPrint*, unsigned char*, unsigned char*, unsigned char*, unsigned char*) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#11 0x0000f1fe1c248d60 in SharedRuntime::generate_i2c2i_adapters(MacroAssembler*, int, int, BasicType const*, VMRegPair const*, AdapterFingerPrint*) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#12 0x0000f1fe1c23d49c in AdapterHandlerLibrary::create_adapter(AdapterBlob*&, int, BasicType*, bool) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#13 0x0000f1fe1c242a20 in AdapterHandlerLibrary::get_adapter(methodHandle const&) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#14 0x0000f1fe1c0fee34 in Method::make_adapters(methodHandle const&, JavaThread*) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#15 0x0000f1fe1c0fef98 in Method::link_method(methodHandle const&, JavaThread*) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#16 0x0000f1fe1bd9f990 in InstanceKlass::link_methods(JavaThread*) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#17 0x0000f1fe1bd9fd9c in InstanceKlass::link_class_impl(JavaThread*) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#18 0x0000f1fe1bda4934 in InstanceKlass::initialize_impl(JavaThread*) () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#19 0x0000f1fe1be6d048 in get_method_id(JNIEnv_*, _jclass*, char const*, char const*, bool, JavaThread*) [clone .isra.0] () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#20 0x0000f1fe1be6d3ec in jni_GetStaticMethodID () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/lib/server/libjvm.so
#21 0x0000f1fe1cc64368 in JavaMain () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/bin/../lib/libjli.so
#22 0x0000f1fe1cc678dc in ThreadJavaMain () from /home/ubuntu/.sdkman/candidates/java/24.0.1-amzn/bin/../lib/libjli.so
#23 0x0000f1fe1ca8595c in start_thread (arg=0xf1fe1ccbc200) at ./nptl/pthread_create.c:447
#24 0x0000f1fe1caeba4c in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone3.S:76

This happened when running on an AWS EC2 instance with the following details

  • Instance type = c8g.2xlarge
  • AMI name = ubuntu/images/hvm-ssd-gp3/ubuntu-noble-24.04-arm64-server-20250610
  • JAVA = OpenJDK Runtime Environment Corretto-24.0.1.9.1 (build 24.0.1+9-FR)
  • GCC = gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0

Expected vs. actual behavior

VMX shouldn't crash for nativemem & other events

Reproduction Steps

Create an EC2 instance with the details provided & just do make test

Additional Information/Context

No response

Async-profiler version

latest

Environment details

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions