Skip to content

Commit

Permalink
Initialization of dpctl to set subprocess to not use FORK on Linux
Browse files Browse the repository at this point in the history
Fork is not supported by DPC++ runtime. Attempt to use fork may
cause hangs, or incorrect behavior. In particular, it may affect
working on oneapi-gdb.

To enable smooth experience in debugging kernels launched by
dpctl, or extensions built using dpctl C++ API, initialization
of dpctl on Linux, imports subprocess and sets its configuration
variables to use SPAWN over FORK

https://docs.python.org/3/library/subprocess.html#disabling-use-of-vfork-or-posix-spawn
  • Loading branch information
oleksandr-pavlyk committed Jan 17, 2025
1 parent 653f579 commit af3347a
Showing 1 changed file with 17 additions and 0 deletions.
17 changes: 17 additions & 0 deletions dpctl/_init_helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,3 +32,20 @@
os.add_dll_directory(dll_dir)

del is_venv_win32

is_linux = sys.platform.startswith("linux")

if is_linux:
# forking is not supported by device drivers
# Configure subprocess (used by versioneer) to
# use SPAWN method over FORK method to enable
# use of gdb-oneapi to debug code launched by
# native extensions that used dpctl C/C++ API
import subprocess

subprocess._USE_VFORK = False
subprocess._USE_POSIX_SPAWN = True
# remove qualifier from this namespace
del subprocess

del is_linux

0 comments on commit af3347a

Please sign in to comment.