Bug 1662178 - Compilation fails for xlators/mgmt/glusterd/src with error "undefined reference to `dlclose'"
Summary: Compilation fails for xlators/mgmt/glusterd/src with error "undefined referen...
Keywords:
Status: CLOSED WORKSFORME
Alias: None
Product: GlusterFS
Classification: Community
Component: glusterd
Version: 5
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: ---
Assignee: bugs@gluster.org
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2018-12-26 19:13 UTC by vnosov
Modified: 2019-06-18 08:58 UTC (History)
5 users (show)

Fixed In Version: glusterfs-6.x
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2019-06-18 08:58:40 UTC
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Embargoed:


Attachments (Terms of Use)

Description vnosov 2018-12-26 19:13:35 UTC
Description of problem:

During GlusterFS 5.2 installation command "make" fails to find reference to "dlclose". Result is failure to install.

Version-Release number of selected component (if applicable):

File "glusterfs-5.2.tar.gz" was used for installation on Centos 6 virtual system that runs kernel version 2.6.32-696 on Azure. 

How reproducible: any time


Steps to Reproduce:
1.  Run ./autogen.sh.

2.  Run ./configure --build=x86_64-redhat-linux-gnu --host=x86_64-redhat-linux-gnu --target=x86_64-redhat-linux-gnu --program-prefix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64 --libexecdir=/usr/libexec --localstatedir=/var --sharedstatedir=/var/lib --mandir=/usr/share/man --infodir=/usr/share/info --without-tmpfilesdir --disable-syslog --enable-gnfs

GlusterFS configure summary
===========================
FUSE client          : yes
Infiniband verbs     : yes
epoll IO multiplex   : yes
fusermount           : yes
readline             : yes
georeplication       : yes
Linux-AIO            : yes
Enable Debug         : no
Enable ASAN          : no
Block Device xlator  : yes
glupy                : yes
Use syslog           : no
XML output           : yes
Encryption xlator    : yes
Unit Tests           : no
Track priv ports     : yes
POSIX ACLs           : yes
Data Classification  : yes
SELinux features     : yes
firewalld-config     : no
Events               : yes
EC dynamic support   : x64 sse avx
Use memory pools     : yes
Nanosecond m/atimes  : yes
Server components    : yes
Legacy gNFS server   : yes
IPV6 default         : no
Use TIRPC            : missing
With Python          : 2.6
Cloudsync            : yes

3. Failure could be reproduced by doing the next:

Go to the directory:

[root@VN-SC-2 src]# pwd
./xlators/mgmt/glusterd/src

Run:

[root@VN-SC-2 src]# make clean
test -z "" || rm -f
rm -rf .libs _libs
test -z "glusterd.la" || rm -f glusterd.la
rm -f "./so_locations"
rm -f *.o
rm -f *.lo

Run "make":

Actual results:

[root@VN-SC-2 src]# make
  CC     glusterd_la-glusterd.lo
  CC     glusterd_la-glusterd-handler.lo
  CC     glusterd_la-glusterd-sm.lo
  CC     glusterd_la-glusterd-op-sm.lo
  CC     glusterd_la-glusterd-utils.lo
  CC     glusterd_la-glusterd-rpc-ops.lo
  CC     glusterd_la-glusterd-store.lo
  CC     glusterd_la-glusterd-handshake.lo
  CC     glusterd_la-glusterd-pmap.lo
  CC     glusterd_la-glusterd-volgen.lo
  CC     glusterd_la-glusterd-rebalance.lo
  CC     glusterd_la-glusterd-quota.lo
  CC     glusterd_la-glusterd-bitrot.lo
  CC     glusterd_la-glusterd-geo-rep.lo
  CC     glusterd_la-glusterd-replace-brick.lo
  CC     glusterd_la-glusterd-log-ops.lo
  CC     glusterd_la-glusterd-tier.lo
  CC     glusterd_la-glusterd-volume-ops.lo
  CC     glusterd_la-glusterd-brick-ops.lo
  CC     glusterd_la-glusterd-mountbroker.lo
  CC     glusterd_la-glusterd-syncop.lo
  CC     glusterd_la-glusterd-hooks.lo
  CC     glusterd_la-glusterd-volume-set.lo
  CC     glusterd_la-glusterd-locks.lo
  CC     glusterd_la-glusterd-snapshot.lo
  CC     glusterd_la-glusterd-mgmt-handler.lo
  CC     glusterd_la-glusterd-mgmt.lo
  CC     glusterd_la-glusterd-peer-utils.lo
  CC     glusterd_la-glusterd-statedump.lo
  CC     glusterd_la-glusterd-snapshot-utils.lo
  CC     glusterd_la-glusterd-conn-mgmt.lo
  CC     glusterd_la-glusterd-proc-mgmt.lo
  CC     glusterd_la-glusterd-svc-mgmt.lo
  CC     glusterd_la-glusterd-shd-svc.lo
  CC     glusterd_la-glusterd-nfs-svc.lo
  CC     glusterd_la-glusterd-quotad-svc.lo
  CC     glusterd_la-glusterd-svc-helper.lo
  CC     glusterd_la-glusterd-conn-helper.lo
  CC     glusterd_la-glusterd-snapd-svc.lo
  CC     glusterd_la-glusterd-snapd-svc-helper.lo
  CC     glusterd_la-glusterd-bitd-svc.lo
  CC     glusterd_la-glusterd-scrub-svc.lo
  CC     glusterd_la-glusterd-server-quorum.lo
  CC     glusterd_la-glusterd-reset-brick.lo
  CC     glusterd_la-glusterd-tierd-svc.lo
  CC     glusterd_la-glusterd-tierd-svc-helper.lo
  CC     glusterd_la-glusterd-gfproxyd-svc.lo
  CC     glusterd_la-glusterd-gfproxyd-svc-helper.lo
  CCLD   glusterd.la
.libs/glusterd_la-glusterd-utils.o: In function `glusterd_get_volopt_content':
/home/col/glusterfs-5.2/xlators/mgmt/glusterd/src/glusterd-utils.c:13417: undefined reference to `dlclose'
.libs/glusterd_la-glusterd-utils.o: In function `glusterd_get_value_for_vme_entry':
/home/col/glusterfs-5.2/xlators/mgmt/glusterd/src/glusterd-utils.c:12984: undefined reference to `dlclose'
.libs/glusterd_la-glusterd-volgen.o: In function `_gd_get_option_type':
/home/col/glusterfs-5.2/xlators/mgmt/glusterd/src/glusterd-volgen.c:7009: undefined reference to `dlclose'
.libs/glusterd_la-glusterd-quota.o: In function `_glusterd_validate_quota_opts':
/home/col/glusterfs-5.2/xlators/mgmt/glusterd/src/glusterd-quota.c:1943: undefined reference to `dlclose'
collect2: ld returned 1 exit status
make: *** [glusterd.la] Error 1
 

Expected results:  should be no failures.


Additional info:

It seems linker flag "-ldl" is not used by make. We put flag "-ldl" into command that is called by "make" and result was success:

[root@VN-SC-2 src]# /bin/sh ../../../../libtool --silent --tag=CC   --mode=link gcc -Wall -g -O2 -g -rdynamic -Wformat -Werror=format-security -Werror=implicit-function-declaration -I/usr/include/libxml2   -g -O2 -g -rdynamic -Wformat -Werror=format-security -Werror=implicit-function-declaration -module -avoid-version -export-symbols ../../../../xlators/xlator.sym -luuid   -Wl,--no-undefined  -o glusterd.la -rpath /usr/lib64/glusterfs/5.2/xlator/mgmt glusterd_la-glusterd.lo glusterd_la-glusterd-handler.lo glusterd_la-glusterd-sm.lo glusterd_la-glusterd-op-sm.lo glusterd_la-glusterd-utils.lo glusterd_la-glusterd-rpc-ops.lo glusterd_la-glusterd-store.lo glusterd_la-glusterd-handshake.lo glusterd_la-glusterd-pmap.lo glusterd_la-glusterd-volgen.lo glusterd_la-glusterd-rebalance.lo glusterd_la-glusterd-quota.lo glusterd_la-glusterd-bitrot.lo glusterd_la-glusterd-geo-rep.lo glusterd_la-glusterd-replace-brick.lo glusterd_la-glusterd-log-ops.lo glusterd_la-glusterd-tier.lo glusterd_la-glusterd-volume-ops.lo glusterd_la-glusterd-brick-ops.lo glusterd_la-glusterd-mountbroker.lo glusterd_la-glusterd-syncop.lo glusterd_la-glusterd-hooks.lo glusterd_la-glusterd-volume-set.lo glusterd_la-glusterd-locks.lo glusterd_la-glusterd-snapshot.lo glusterd_la-glusterd-mgmt-handler.lo glusterd_la-glusterd-mgmt.lo glusterd_la-glusterd-peer-utils.lo glusterd_la-glusterd-statedump.lo glusterd_la-glusterd-snapshot-utils.lo glusterd_la-glusterd-conn-mgmt.lo glusterd_la-glusterd-proc-mgmt.lo glusterd_la-glusterd-svc-mgmt.lo glusterd_la-glusterd-shd-svc.lo glusterd_la-glusterd-nfs-svc.lo glusterd_la-glusterd-quotad-svc.lo glusterd_la-glusterd-svc-helper.lo glusterd_la-glusterd-conn-helper.lo glusterd_la-glusterd-snapd-svc.lo glusterd_la-glusterd-snapd-svc-helper.lo glusterd_la-glusterd-bitd-svc.lo glusterd_la-glusterd-scrub-svc.lo glusterd_la-glusterd-server-quorum.lo glusterd_la-glusterd-reset-brick.lo glusterd_la-glusterd-tierd-svc.lo glusterd_la-glusterd-tierd-svc-helper.lo glusterd_la-glusterd-gfproxyd-svc.lo glusterd_la-glusterd-gfproxyd-svc-helper.lo ../../../../libglusterfs/src/libglusterfs.la ../../../../rpc/xdr/src/libgfxdr.la ../../../../rpc/rpc-lib/src/libgfrpc.la -lxml2   -lcrypto -lurcu-bp   -lurcu-cds -llvm2app -lrt -lpthread -lcrypto -ldl


[root@VN-SC-2 src]# make
make: Nothing to be done for `all'.

Comment 1 Atin Mukherjee 2019-06-09 05:37:29 UTC
Does this still happen?

Comment 2 vnosov 2019-06-10 23:28:56 UTC
 Installation of Glisters 6.2 does not have this problem. Viktor.


Note You need to log in before you can comment on or make changes to this bug.