8173941 Re: SA does not work if executable is DSO

Yasumasa Suenaga yasuenag at gmail.com
Wed Feb 8 14:21:44 UTC 2017


Hi Andrew,

I could reproduce it in my environment.


* libsaproc debug
```
libsaproc DEBUG: address of _DYNAMIC is 0x563bc6dd8d28
```

* Address of .dynamic in GDB
```
         0x0000563bc6dd7d28 - 0x0000563bc6dd7f68 is .dynamic
```

It differs 1 page (0x1000).
In this case, according to GDB, `java` was loaded 0x563bc6dd7000.
According to readelf of `java`, offset of dynamic section is 0x1d28.
So I want to investigate why we found 1 memory page difference.
(Is it caused by ASLR? Do you have any idea?)


Thanks,

Yasumasa


On 2017/02/08 20:46, Andrew Haley wrote:
> Okay, thanks.
>
> The patch will have to be submitted to JDK 9 first and then back-
> ported to earlier releases.  Unfortunately it doesn't work on JDK 9.
> I don't know why: I spent some time looking at it, but I couldn't
> figure out what was wrong.
>
> Is there any way you could have a look?  This is using hg.openjdk.java.net/jdk9/hs
> on F25.
>
> Thanks,
>
> Andrew.
>
>
> [aph at localhost hs-8173941]$ LIBSAPROC_DEBUG=1 ./build/linux-x86_64-normal-server-fastdebug/images/jdk/bin/jhsdb jstack --core core.63600 --exe build/linux-x86_64-normal-server-fastdebug/images/jdk/bin/java
> Attaching to core core.63600 from executable build/linux-x86_64-normal-server-fastdebug/images/jdk/bin/java, please wait...
> libsaproc DEBUG: Note header with n_type = 3 and n_descsz = 136
> libsaproc DEBUG: Note header with n_type = 1 and n_descsz = 336
> libsaproc DEBUG: got integer regset for lwp 63600
> libsaproc DEBUG: integer regset
> ...
> libsaproc DEBUG: Note address of NT_FILE is 0x564be32e5000
> libsaproc DEBUG: ELF interpreter /lib64/ld-linux-x86-64.so.2
> libsaproc DEBUG: address of _DYNAMIC p_vaddr is 0x201d28
> libsaproc DEBUG: address of _DYNAMIC is 0x564be32e6d28
> libsaproc DEBUG: ---- sorted virtual address map ----
> ...
> libsaproc DEBUG: base = 0x7fe62227c000  size = 4096
> libsaproc DEBUG: base = 0x7ffeabb33000  size = 135168
> libsaproc DEBUG: base = 0x7ffeabbc0000  size = 8192
> libsaproc DEBUG: base = 0xffffffffff600000      size = 4096
> libsaproc DEBUG: can't locate map_info at 0x564be32e7000
> libsaproc DEBUG: core read failed for 16 byte(s) @ 0x564be32e7000 (8 more bytes)
> libsaproc DEBUG: 1: can't read debug info from _DYNAMIC
> Error attaching to core file: Can't attach to the core file
> sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the core file
>         at jdk.hotspot.agent/sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
>         at jdk.hotspot.agent/sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:286)
>         at jdk.hotspot.agent/sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:679)
>         at jdk.hotspot.agent/sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:617)
>


More information about the serviceability-dev mailing list