[Openmp-commits] [PATCH] D89898: changing OMP rtl to use shared memory instead of env variable

Andrey Churbanov via Phabricator via Openmp-commits openmp-commits at lists.llvm.org
Wed Nov 18 07:20:56 PST 2020

AndreyChurbanov added a comment.

In D89898#2400546 <https://reviews.llvm.org/D89898#2400546>, @rogfer01 wrote:

> Hi @jdoerfert
>> [Drive by] What about appending the process id or a random number to the file name, or both?
> yeah, the patch already does this. The space of PIDs it is not too large (most systems still use 16-bit PIDs) so collisions are not that unlikely. It is just a bit confusing that an OpenMP application fails due to this, sporadically, at startup.
> Perhaps the scenario of leftover files is not that common: probably only if the process receives a `SIGKILL`. Most scheduling systems will send `SIGTERM` first and users often use `SIGINT` or `SIGQUIT`.
> Kind regards,

Random number won't work, because the goal of the library registering is to catch several libraries in a single process. So a process should have deterministic file name (or environment variable name).
What we could implement to solve this problem is:

1. Remove shared memory file when a signal caught. This may help when application receives any signal except for SIGKILL which cannot be caught. For this one can set environment variable KMP_HANDLE_SIGNALS=1 (it is off by default).
2. Introduce option to revert library behavior to setting environment variable, say KMP_REGISTER_LIB_ENV=1. That may help applications those do not read environment variables in multiple threads, and be killed by SIGKILL signal.

Maybe there exist some other option?

  rG LLVM Github Monorepo



More information about the Openmp-commits mailing list