Project

General

Profile

Actions

Bug #10735

closed

ceph source tree doesn't build with --enable-debug --enable-xio

Added by Danny Al-Gaaf about 9 years ago. Updated about 9 years ago.

Status:
Resolved
Priority:
Urgent
Assignee:
Category:
common
Target version:
-
% Done:

100%

Source:
Community (dev)
Tags:
Backport:
Regression:
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

Description

The test code doesn't build with the following configure line:

./configure --with-debug --with-radosgw --with-ocf --with-nss --with-profiler --enable-xio

Changing the src/Makefile.am doesn't help due to a hidden symbol (get_xio_mp) in src/include/buffer.h


Files

Actions #1

Updated by Matt Benjamin about 9 years ago

I had an action item from Sage to add an Accelio submodule, so it seems like that's a next step?
I'll proceed in that direction and post something for comment.

Actions #2

Updated by Danny Al-Gaaf about 9 years ago

A submodule with the accelio code doesn't solve it. This is a code/makefile issue in ceph itself since get_xio_mp is a hidden symbol (I have all depending libs installed). Even if you add the correct LDADD to the Makefile it will still fail due to the hidden symbol. I gave it a short try and didn't get it fixed.

Actions #3

Updated by Kefu Chai about 9 years ago

Danny, what is exactly the error message? could you please post it somewhere? thanks.

Actions #4

Updated by Danny Al-Gaaf about 9 years ago

I will post the message as soon as I have recreated the patch for the Makefile (together with an initial patch).

Actions #5

Updated by Danny Al-Gaaf about 9 years ago

The partial patch for make is attached. The error is (hidden symbol ZN4ceph10get_xio_mpERKNS_6buffer3ptrE):


make -j2
[...]
CXXLD ceph_test_rados_striper_api_io
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: .libs/ceph_test_rados_striper_api_io: hidden symbol `_ZN4ceph10get_xio_mpERKNS_6buffer3ptrE' in ./.libs/libglobal.a(libcommon_api_la-buffer.o) is referenced by DSO
/usr/lib64/gcc/x86_64-suse-linux/4.7/../../../../x86_64-suse-linux/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
make[3]: *** [ceph_test_rados_striper_api_io] Error 1

Actions #6

Updated by Danny Al-Gaaf about 9 years ago

Note: this error from traditional autotools/make. Check now if the same problem exists with cmake.

Actions #7

Updated by Kefu Chai about 9 years ago

  • Status changed from New to 12
  • Assignee set to Kefu Chai
  • % Done changed from 0 to 80

PR posted at https://github.com/ceph/ceph/pull/3734. pending on review

Actions #8

Updated by Kefu Chai about 9 years ago

thanks Danny, i managed to come up with a patch based on the one from you. the problem should only affect the build with autotools. seems we hide the symbols in common/buffer.cc in src/common/Makefile.am in order to hide the internals of the DSO (dynamic shared object) from its users. but turns out the XioMessager.cc is referencing the symbol of get_xio_mp() you are talking about. that's why the build fails.

i am assigning my PR to you on github, but please feel free to reject it if you have not enough bandwidth for it. thank you. =)

Actions #9

Updated by Kefu Chai about 9 years ago

  • Subject changed from ceph source tree doesn't build with --with-debug --enable-xio to ceph source tree doesn't build with --enable-xio
Actions #10

Updated by Kefu Chai about 9 years ago

  • Subject changed from ceph source tree doesn't build with --enable-xio to ceph source tree doesn't build with --enable-debug --enable-xio
Actions #11

Updated by Kefu Chai about 9 years ago

  • Status changed from 12 to Fix Under Review

i removed the references to g_conf and g_ceph_context from msg/xio. this could help a little bit.

Actions #12

Updated by Kefu Chai about 9 years ago

  • Status changed from Fix Under Review to Resolved
  • % Done changed from 80 to 100
Actions

Also available in: Atom PDF