On Tue, 12 Jul 2022 19:12:01 GMT, Ioi Lam <ik...@openjdk.org> wrote:

>> Some Kubernetes setups share the /tmp directory across multiple containers. 
>> On rare occasions, the JVM may crash when it tries to write to 
>> `/tmp/hsperfdata_<user>/<pid>` when a process in a separate container 
>> decides to do the same thing (because they happen to have the same 
>> namespaced pid).
>> 
>> This patch avoids the crash by using `flock()` to allow only one of these 
>> processes to write to the file. All other competing processes that fail to 
>> grab the lock will give up the file and run with PerfMemory disabled. We 
>> will try to enable PerfMemory for the failed processes in a follow-up RFE: 
>> [JDK-8289883](https://bugs.openjdk.org/browse/JDK-8289883)
>> 
>> Thanks to Vitaly Davidovich and Nico Williams for coming up with the idea of 
>> using `flock()`.
>> 
>> I kept the use of `kill()` for stale file detection to be compatible with 
>> older JVMs.
>> 
>> I also took the opportunity to clean up the comments and remove dead code. 
>> The old code was using "shared memory resources" which sounds unclear and 
>> odd. I changed the terminology to say "shared memory file" instead.
>
> Ioi Lam has updated the pull request incrementally with two additional 
> commits since the last revision:
> 
>  - add errno to log
>  - added debug log and tweaked comment

Looks good!

-------------

Marked as reviewed by stuefe (Reviewer).

PR: https://git.openjdk.org/jdk/pull/9406

Reply via email to