I still digging into this issue, and have hacked memleak/bcc to show addresses 
when they cant be resolved. In other places, I'm seeing jit complied java stack 
frames showing up alongside C ones, which is the expected behaviour when using 
Java with -XX:+PreserveFramePointer.

I'm still seeing these allocation traces with only two frames per the below.  

        11534336 bytes in 11 allocations from stack
                [7efeebb115d4 unknown] [jna7632521838566054573.tmp ]
                [7efec27f7440 unknown] [perf-15445.map]
        14680064 bytes in 14 allocations from stack
                [7efeebb115d4 unknown] [jna7632521838566054573.tmp ]
                [7efec27f7380 unknown] [perf-15445.map]

I suspect the lower frame above is a libffi generated trampoline. Are there any 
known issues with the eBPF stack tracing infrastructure and such trampolines? 
Workarounds?

Thanks,
Bradley



On 7/4/21, 9:04 pm, "Bradley Schatz" <[email protected]> wrote:

    >    What does '[unknown] [perf-18047.map]' mean? Does this mean
    >   perf-18047.map is not found? If the perf-<pid>.map file cannot be found,
    >    symbolization won't be possible. Maybe you want to double check this?

    The file perf-18047.map is there and from other parts of the stack trace I 
can see it being used to successfully resolve symbols.

    Thanks!



    On 7/4/21, 4:44 am, "Y Song" <[email protected]> wrote:

        On Mon, Apr 5, 2021 at 10:08 PM Bradley Schatz
        <[email protected]> wrote:
        >
        > Thanks for the suggestion. I found a tunable to keep the JNI shared 
library in memory after loading. As you can see below, it is no longer showing 
as deleted.
        >
        >         13238272 bytes in 404 allocations from stack
        >                 [unknown] [jna2576903844543447777.tmp]
        >                 [unknown] [perf-18047.map]

        I have no experience with perf-map-agent, but the following is what I 
guess:
           [perf-18047.map] is used to find the mapping between address and 
symbol.
        What does '[unknown] [perf-18047.map]' mean? Does this mean
        perf-18047.map is not found? If the perf-<pid>.map file cannot be found,
        symbolization won't be possible. Maybe you want to double check this?

        >
        > No improvement in granularity though.
        >
        > In the VM I'm using -XX:+PreserveFramePointer 
-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints. In perf_maps_agent, I'm 
using "unfoldall"
        >
        > Any other suggestions?
        >
        > Thanks!
        >
        >
        >
        >
        > On 3/4/21, 2:42 am, "Y Song" <[email protected]> wrote:
        >
        >     On Wed, Mar 31, 2021 at 11:25 PM Bradley Schatz
        >     <[email protected]> wrote:
        >     >
        >     > Hi,
        >     >
        >     >
        >     >
        >     > I’m just starting to come to grips with bcc & perf-map-agent 
for introspecting java on linux, with the goal of identifying what appears to 
be an off-heap memory leak (using memleak).
        >     >
        >     >
        >     >
        >     > I appear to be getting reliable stack decoding for jvm library 
code and for jit’ed java methods (see below for an example of the former). 
However I am seeing some very short stack traces which don’t seem to decode 
(the latter three stacks of below).
        >     >
        >     >
        >     >
        >     > It’s looking to me like the frame starting with “jna…” is 
likely the native JNI shared library for the FFI library “JNA”.
        >     >
        >     >
        >     >
        >     > Any suggestions as to why these latter three are so brief 
and/or how I can increase the resolution?
        >
        >     I can see the file has been marked as deleted.
        >
        >     34603008 bytes in 33 allocations from stack
        >
        >                   [unknown] [jna9005484735610534564.tmp (deleted)]
        >
        >                   [unknown] [perf-31566.map]
        >
        >            96468992 bytes in 92 allocations from stack
        >
        >                   [unknown] [jna9005484735610534564.tmp (deleted)]
        >
        >                   [unknown] [perf-31566.map]
        >
        >     So the file has been removed in userspace and current bcc won't be
        >     pass to parse it since it takes the file name as
        >     "jna9005484735610534564.tmp (deleted)"
        >     The file name is actually taken from /proc/<pid>/maps.
        >
        >     I am not sure whether you can hack to parse 
"jna9005484735610534564.tmp" or not.
        >     But I would consider it is unsafe to do that as the original file
        >     related info may just
        >     exist in kernel and there is a reference to it. For user space, 
it is
        >     either gone or
        >     could be replaced by something else. So the safest way is to find 
a place to
        >     do symbolization before file is gone or keep tmp file a little 
bit longer.
        >     >
        >     >
        >     >
        >     > Apologies if this is the wrong place for such a question. Thank 
you for your help.
        >     >
        >     >
        >     >
        >     > Kind regards,
        >     >
        >     > Bradley
        >     >
        >     >
        >     >
        >     >
        >     >
        >     >
        >     >
        >     >
        >     >
        >     >        119408 bytes in 71 allocations from stack
        >     >
        >     >               os::malloc(unsigned long, MemoryType, 
NativeCallStack const&)+0xb5 [libjvm.so]
        >     >
        >     >               CodeBlob::set_oop_maps(OopMapSet*) [clone 
.part.5]+0x75 [libjvm.so]
        >     >
        >     >               CodeBlob::CodeBlob(char const*, CodeBuffer*, int, 
int, int, int, OopMapSet*)+0xe3 [libjvm.so]
        >     >
        >     >               nmethod::nmethod(Method*, int, int, int, 
CodeOffsets*, int, DebugInformationRecorder*, Dependencies*, CodeBuffer*, int, 
OopMapSet*, ExceptionHandlerTable*, ImplicitExceptionTable*, AbstractCompiler*, 
int)+0x4d [libjvm.so]
        >     >
        >     >               nmethod::new_nmethod(methodHandle, int, int, 
CodeOffsets*, int, DebugInformationRecorder*, Dependencies*, CodeBuffer*, int, 
OopMapSet*, ExceptionHandlerTable*, ImplicitExceptionTable*, AbstractCompiler*, 
int)+0x219 [libjvm.so]
        >     >
        >     >               ciEnv::register_method(ciMethod*, int, 
CodeOffsets*, int, CodeBuffer*, int, OopMapSet*, ExceptionHandlerTable*, 
ImplicitExceptionTable*, AbstractCompiler*, int, bool, bool, RTMState)+0x1b1 
[libjvm.so]
        >     >
        >     >               Compile::Compile(ciEnv*, C2Compiler*, ciMethod*, 
int, bool, bool, bool)+0xe60 [libjvm.so]
        >     >
        >     >               C2Compiler::compile_method(ciEnv*, ciMethod*, 
int)+0xa3 [libjvm.so]
        >     >
        >     >               
CompileBroker::invoke_compiler_on_method(CompileTask*)+0x808 [libjvm.so]
        >     >
        >     >               CompileBroker::compiler_thread_loop()+0x6d8 
[libjvm.so]
        >     >
        >     >               JavaThread::thread_main_inner()+0x1c7 [libjvm.so]
        >     >
        >     >               JavaThread::run()+0x2fa [libjvm.so]
        >     >
        >     >               java_start(Thread*)+0x102 [libjvm.so]
        >     >
        >     >               start_thread+0xf3 [libpthread-2.28.so]
        >     >
        >     >        34603008 bytes in 33 allocations from stack
        >     >
        >     >               [unknown] [jna9005484735610534564.tmp (deleted)]
        >     >
        >     >               [unknown] [perf-31566.map]
        >     >
        >     >        96468992 bytes in 92 allocations from stack
        >     >
        >     >               [unknown] [jna9005484735610534564.tmp (deleted)]
        >     >
        >     >               [unknown] [perf-31566.map]
        >     >
        >     >        295698432 bytes in 282 allocations from stack
        >     >
        >     >               [unknown] [jna9005484735610534564.tmp (deleted)]
        >     >
        >     >               [unknown] [perf-31566.map]
        >     >
        >     >
        >     >
        >     > 
        >




-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#1987): https://lists.iovisor.org/g/iovisor-dev/message/1987
Mute This Topic: https://lists.iovisor.org/mt/82136333/21656
Group Owner: [email protected]
Unsubscribe: https://lists.iovisor.org/g/iovisor-dev/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to