PING: RFR: 8205992: jhsdb cannot attach to Java processes running in Docker containers
Chris Plummer
chris.plummer at oracle.com
Thu Jul 19 18:26:49 UTC 2018
Hi Yasumasa,
84 // It maps the LWPID in the host to it in the container.
"it" -> "the PID"
286 // Get LWPID in the host from the container's LWPID.
287 public int getHostPID(int id) {
288 try {
289 return nspidMap.get(id);
290 } catch (NullPointerException e) {
291 return -1;
292 }
293 }
What is the source of the NPE here? Is it because nspidMap was never
initialized because the process is not in a container? In that case I
think you should be checking for null rather than having an NPE be part
of normal execution.
42 int hostPID =
((LinuxDebuggerLocal)debugger).getHostPID(pid);
43 if (hostPID != -1) {
44 pid = hostPID;
45 }
A comment here would be helpful.
The rest looks good. I should probably run it through some internal
testing. Let me know when you have a final webrev.
thanks,
Chris
On 7/18/18 5:59 AM, Yasumasa Suenaga wrote:
> PING:
>
> Could you review it?
>
> JBS: https://bugs.openjdk.java.net/browse/JDK-8205992
> webrev: http://cr.openjdk.java.net/~ysuenaga/JDK-8205992/webrev.01/
>
> This change has been reviewed by Jini.
> We need a Reviewer.
>
>
> Thanks,
>
> Yasumasa
>
>
> On 2018/07/12 13:42, Yasumasa Suenaga wrote:
>> Thanks Jini,
>>
>> I uploaded new webrev. It contains some comments and removing extra
>> space.
>>
>> http://cr.openjdk.java.net/~ysuenaga/JDK-8205992/webrev.01/
>>
>>
>> Yasumasa
>>
>>
>>
>> 2018-07-12 2:32 GMT+09:00 Jini George <jini.george at oracle.com>:
>>> Hi Yasumasa,
>>>
>>> This looks good to me except for one nit. And some more comments
>>> would help.
>>> For e.g., it would help to say that NSPidMap is to map the host to
>>> container
>>> lwpids.
>>>
>>> The nit:
>>>
>>> *
>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8205992/webrev.00/src/jdk.hotspot.agent/linux/native/libsaproc/LinuxDebuggerLocal.c.sdiff.html
>>>
>>> Line 253: extra space after the parentheses
>>>
>>> Thanks,
>>> Jini.
>>>
>>> On 7/4/2018 4:34 AM, Yasumasa Suenaga wrote:
>>>>
>>>> PING: Could you review it?
>>>>
>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8205992
>>>>> webrev:
>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8205992/webrev.00/
>>>>
>>>>
>>>>
>>>> Thanks,
>>>>
>>>> Yasumasa
>>>>
>>>>
>>>> On 2018/06/28 22:12, Yasumasa Suenaga wrote:
>>>>>
>>>>> Hi all,
>>>>>
>>>>> Please review this change.
>>>>>
>>>>> JBS: https://bugs.openjdk.java.net/browse/JDK-8205992
>>>>> webrev:
>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8205992/webrev.00/
>>>>>
>>>>> I tried to attach jhsdb to java process in docker container from
>>>>> container host, but it couldn't.
>>>>> jcmd supports PID namespace in JDK-8193710, but jhsdb hasn't yet.
>>>>>
>>>>> SA gets LWP ID via thread stack and funcs in libthread_db.so, but
>>>>> they
>>>>> returns PIDs in container - they are different from host's PID. So
>>>>> I added
>>>>> the code to scan /proc/<PID>/task to get all LWP IDs and they are
>>>>> kept in a
>>>>> Map in LinuxDebuggerLocal.
>>>>>
>>>>> Also SA_ALTROOT is set to /proc/<PID>/root if SA detects debuggee
>>>>> runs in
>>>>> container. It helps SA to parse binaries in container.
>>>>>
>>>>> This change has been pushed to submit repo, and it was failed on OS X
>>>>> (mach5-one-ysuenaga-JDK-8205992-20180628-1015-28963).
>>>>> But I guess it causes JDK-8205906. This change affects to Linux only.
>>>>>
>>>>> Could you review it?
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Yasumasa
>>>>>
>>>
More information about the serviceability-dev
mailing list