Skip to content

$DYLD_LIBRARY_PATH may be cleared unexpectedly #3694

@jchen6727

Description

@jchen6727

Overview of the feature

#3692

on:

zsh 5.9 (arm64-apple-darwin24.0)
macOS 15.6.1

this occurs with nohup

(dev) ➜  tuning git:(fi-tuning) ✗ python -c 'import os;print(os.getenv("DYLD_LIBRARY_PATH"))'
/opt/homebrew/Cellar/open-mpi/5.0.9/lib
(dev) ➜  tuning git:(fi-tuning) ✗ nohup python -c 'import os;print(os.getenv("DYLD_LIBRARY_PATH"))'
appending output to nohup.out
(dev) ➜  tuning git:(fi-tuning) ✗ cat nohup.out
None

also noticed in PyCharm IDE, perhaps shows up in other instances as well...

This can cause issues with automation and mpiexec:

nohup mpiexec -np 2 nrniv -python -mpi simulation.py

would not see $DYLD_LIBRARY_PATH leading to something similar to the following error message -- also note "need a ... DYLD_LIBRARY_PATH on Mac OS" which would not resolve this particular issue:::

(dev) ➜  tuning git:(fi-tuning) ✗ nohup mpiexec -np 2 nrniv -python -mpi -c 'import os;print(os.getenv("DYLD_LIBRARY_PATH"))'
appending output to nohup.out
(dev) ➜  tuning git:(fi-tuning) ✗ cat nohup.out
Try loading libmpi
load_mpi: dlopen(libmpi.dylib, 0x000A): tried: 'libmpi.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibmpi.dylib' (no such file), '/Users/jchen/miniconda3/envs/dev/lib/python3.12/site-packages/neuron/.data/lib/../lib/libmpi.dylib' (no such file), '/Users/jchen/miniconda3/envs/dev/lib/python3.12/site-packages/neuron/.data/bin/../lib/libmpi.dylib' (no such file), '/usr/lib/libmpi.dylib' (no such file, not in dyld cache), 'libmpi.dylib' (no such file)
Is openmpi or mpich installed? If not in default location, need a LD_LIBRARY_PATH on Linux or DYLD_LIBRARY_PATH on Mac OS. On Mac OS, full path to a MPI library can be provided via environmental variable MPI_LIB_NRN_PATH
could not dynamically load libmpi.so or libmpich.so

Try loading libmpi
load_mpi: dlopen(libmpi.dylib, 0x000A): tried: 'libmpi.dylib' (no such file), '/System/Volumes/Preboot/Cryptexes/OSlibmpi.dylib' (no such file), '/Users/jchen/miniconda3/envs/dev/lib/python3.12/site-packages/neuron/.data/lib/../lib/libmpi.dylib' (no such file), '/Users/jchen/miniconda3/envs/dev/lib/python3.12/site-packages/neuron/.data/bin/../lib/libmpi.dylib' (no such file), '/usr/lib/libmpi.dylib' (no such file, not in dyld cache), 'libmpi.dylib' (no such file)
Is openmpi or mpich installed? If not in default location, need a LD_LIBRARY_PATH on Linux or DYLD_LIBRARY_PATH on Mac OS. On Mac OS, full path to a MPI library can be provided via environmental variable MPI_LIB_NRN_PATH
could not dynamically load libmpi.so or libmpich.so

--------------------------------------------------------------------------
prterun detected that one or more processes exited with non-zero status,
thus causing the job to be terminated. The first process to do so was:

   Process name: [prterun-Mac-98808@1,1]
   Exit code:    1
--------------------------------------------------------------------------

repeating across however many cores ...
esp. it does not check the $DYLD_LIBRARY_PATH we've set because of the SIP (?) clearing that variable (though the other variable pointing to the mpiexec binary is retained...)

Foreseeable Impact

Issues with automation, running MPI+NEURON.
Can the error message be changed or the pathing for the .dylib handled differently?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions