ceph / ceph/phprados

undefined symbol: rados_clone_range on CentOS 7

Open
#30 4 comments 0 reactions 0 assignees View on GitHub
Dominant language
C
Stars
38
Forks
25
PR merge metrics
No merged PRs in 30d

Description

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:
```bash
$ 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:
```bash
$ 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

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the CentOS 7/PHP 7.2 build and running ldd -r on rados.so, then inspect the phprados references to rados_clone_range against the installed librados headers and library. Done means identifying the compatibility mismatch and recording or implementing a supported resolution for this environment.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, php
Domain
backend, distributed-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.