https://bugzilla.suse.com/show_bug.cgi?id=1200030 https://bugzilla.suse.com/show_bug.cgi?id=1200030#c4 --- Comment #4 from Christian Goll <cgoll@suse.com> --- (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. -- You are receiving this mail because: You are on the CC list for the bug.