Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

undefined symbol: rados_clone_range on CentOS 7 #30

Open
kaplun opened this issue May 3, 2018 · 4 comments
Open

undefined symbol: rados_clone_range on CentOS 7 #30

kaplun opened this issue May 3, 2018 · 4 comments

Comments

@kaplun
Copy link

kaplun commented May 3, 2018

Hi I am trying to build phprados on CentOS 7 to be used with PHP-7.2. as provided by WebTatic: https://webtatic.com/packages/php72/

I have installed librados:

$ rpm -qa | grep rados
librados-devel-12.2.5-0.el7.x86_64
librados2-12.2.5-0.el7.x86_64

And the phprados does compile and install successfully. However upon import into PHP it fails with:

PHP Warning:  PHP Startup: Unable to load dynamic library 'rados.so' (tried:
 /usr/lib64/php/modules/rados.so (/usr/lib64/php/modules/rados.so: undefined symbol: 
rados_clone_range), /usr/lib64/php/modules/rados.so.so (/usr/lib64/php/modules/rados.so.so: cannot 
open shared object file: No such file or directory)) in Unknown on line 0

I checked and indeed:

$ ldd -r /usr/lib64/php/modules/rados.so 
	linux-vdso.so.1 =>  (0x00007ffda4e6d000)
	libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007f17dcd14000)
	librados.so.2 => /lib64/librados.so.2 (0x00007f17dc9af000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f17dc5ec000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f17dc3e8000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f17dc1d2000)
	libceph-common.so.0 => /usr/lib64/ceph/libceph-common.so.0 (0x00007f17d34f2000)
	libblkid.so.1 => /lib64/libblkid.so.1 (0x00007f17d32b3000)
	libssl3.so => /lib64/libssl3.so (0x00007f17d3067000)
	libsmime3.so => /lib64/libsmime3.so (0x00007f17d2e40000)
	libnss3.so => /lib64/libnss3.so (0x00007f17d2b16000)
	libnssutil3.so => /lib64/libnssutil3.so (0x00007f17d28e9000)
	libplds4.so => /lib64/libplds4.so (0x00007f17d26e5000)
	libplc4.so => /lib64/libplc4.so (0x00007f17d24e0000)
	libnspr4.so => /lib64/libnspr4.so (0x00007f17d22a2000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f17d209a000)
	libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f17d1e80000)
	libibverbs.so.1 => /lib64/libibverbs.so.1 (0x00007f17d1c6b000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f17d1a4f000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f17d1747000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f17d1445000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f17d122f000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f17dd381000)
	libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f17d102a000)
	libnl-route-3.so.200 => /lib64/libnl-route-3.so.200 (0x00007f17d0dbd000)
	libnl-3.so.200 => /lib64/libnl-3.so.200 (0x00007f17d0b9c000)
undefined symbol: zend_hash_get_current_data_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: php_error_docref0	(/usr/lib64/php/modules/rados.so)
undefined symbol: add_next_index_string	(/usr/lib64/php/modules/rados.so)
undefined symbol: _emalloc	(/usr/lib64/php/modules/rados.so)
undefined symbol: zend_hash_move_forward_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: php_info_print_table_row	(/usr/lib64/php/modules/rados.so)
undefined symbol: rados_clone_range	(/usr/lib64/php/modules/rados.so)
undefined symbol: add_next_index_long	(/usr/lib64/php/modules/rados.so)
undefined symbol: zend_fetch_resource	(/usr/lib64/php/modules/rados.so)
undefined symbol: add_assoc_string_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: Z_LVAL_PP	(/usr/lib64/php/modules/rados.so)
undefined symbol: _emalloc_16	(/usr/lib64/php/modules/rados.so)
undefined symbol: php_info_print_table_end	(/usr/lib64/php/modules/rados.so)
undefined symbol: php_info_print_table_start	(/usr/lib64/php/modules/rados.so)
undefined symbol: zend_hash_internal_pointer_reset_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: Z_TYPE_PP	(/usr/lib64/php/modules/rados.so)
undefined symbol: _estrndup	(/usr/lib64/php/modules/rados.so)
undefined symbol: zend_parse_parameters	(/usr/lib64/php/modules/rados.so)
undefined symbol: zend_register_resource	(/usr/lib64/php/modules/rados.so)
undefined symbol: zend_register_list_destructors_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: _efree	(/usr/lib64/php/modules/rados.so)
undefined symbol: add_assoc_stringl_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: add_assoc_long_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: _array_init	(/usr/lib64/php/modules/rados.so)
undefined symbol: zend_hash_get_current_key_ex	(/usr/lib64/php/modules/rados.so)
undefined symbol: php_sprintf	(/usr/lib64/php/modules/rados.so)
undefined symbol: display_ini_entries	(/usr/lib64/php/modules/rados.so)

Beside the PHP-specific symbols, that can only be resolved from within PHP, it seems like like also rados_clone_range is an unresolved symbol.

cc: @JanoSicek

@wido
Copy link
Member

wido commented May 3, 2018

It seems that rados_clone_range no longer exists in librados.

I'll push a new commit to master removing this function

@kaplun
Copy link
Author

kaplun commented May 3, 2018

Awesome! Thanks a lot for the quick reaction!

@kaplun
Copy link
Author

kaplun commented Jun 20, 2018

I unfortunately confirm @JanoSicek findings.

@JanoSicek
Copy link
Contributor

It seems that while this one symbol was fixed (rados_clone_range), all other symbols still generate errors.

PHP Warning: PHP Startup: Unable to load dynamic library 'rados.so' (tried: /usr/lib64/php/modules/rados.so (/usr/lib64/php/modules/rados.so: undefined symbol: Z_LVAL_PP)

To help reproduce, here are some interesting parts from our Dockerfile

RUN yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
RUN rpm -Uvh http://download.ceph.com/rpm-mimic/el7/noarch/ceph-release-1-1.el7.noarch.rpm
RUN yum install -y librados-devel php72w php72w-common php72w-devel php72w-opcache php72w-mbstring php72w-mysqlnd php72w-pecl-xdebug php72w-intl php72w-cli php72w-gd php72w-pdo php72w-mcrypt re2c php72w-pear
RUN phpize && ./configure && make && make install
RUN echo 'extension=rados.so' > /etc/php.d/rados.ini

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants