Hide Forgot
# for p in $(for i in /usr/libexec/lcrso/*; do rpm -qf "${i}"; done \ | sort -u); do echo "${p}:"; rpm -ql "${p}" \ | grep -F /usr/libexec/lcrso/; done > [...] > corosync-1.4.1-17.el6.x86_64: > /usr/libexec/lcrso/coroparse.lcrso > /usr/libexec/lcrso/objdb.lcrso > /usr/libexec/lcrso/quorum_testquorum.lcrso > /usr/libexec/lcrso/quorum_votequorum.lcrso > /usr/libexec/lcrso/service_cfg.lcrso > /usr/libexec/lcrso/service_confdb.lcrso > /usr/libexec/lcrso/service_cpg.lcrso > /usr/libexec/lcrso/service_evs.lcrso > /usr/libexec/lcrso/service_pload.lcrso > /usr/libexec/lcrso/vsf_quorum.lcrso > /usr/libexec/lcrso/vsf_ykd.lcrso > [...] # /usr/libexec/lcrso/coroparse.lcrso > Segmentation fault (core dumped)
Moving to 6.6 because 6.5 capacity constrained.
Libraries (*.so) files are generally created executable (and lcrso is just renamed so). Only very few libraries contains valid entry point (libc does, pthread does, ld.so does). Vast majority of libraries execution ends with segfault. Take a look to /lib{64} or /usr/lib{64}. Executable bit is also used on some platforms (like hp-ux) and without it, dl_open doesn't work. Generally, I don't have any intent to solve this in RHEL 6, because possible breaking compatibility and general nonsense of such action. RHEL 7 corosync doesn't include lcrso so it's already solved there.