(In reply to Jan Engelhardt from comment #3) > The error still reproduces (despite SUSE_ZNOW=0) when you invoke > > LD_BIND_NOW=1 /usr/sbin/slurmd > > for exactly the reason I have given. In detail: > > 1. slurmd dlopens (in my case) /usr/lib64/slurm/select_cons_tres.so > 2. `nm -D select_cons_tres.so` yields " U gres_ctld_job_build_details". > 3. All symbols must be resolvable upon load. This is not the case for > select_cons_tres, select_linear, and probably more plugins. > 4. If a symbol is not resolve on load, dlopen will fail. > 5. If LD_BIND_NOW/ZNOW=0 and dlopen() was invoked with RTLD_LAZY, then the > program will abort when the attempt to resolve is made and no match is > found. (Which can be never if the piece of code in question is never > invoked.) > > And slurmd relying on #5 is a bad idea. I am full with you that relying on #5 is a bad idea, but this is how upstream has implemented it. For example in order to find which mpi startup methods can be used, there is the command ``` srun --mpi=list ``` which tries to load all mpi related shared libraries and only list the one which it can load without error.