[Bugs] [Bug 1226255] New: Undefined symbol "changelog_select_event"

bugzilla at redhat.com bugzilla at redhat.com
Fri May 29 10:07:26 UTC 2015


https://bugzilla.redhat.com/show_bug.cgi?id=1226255

            Bug ID: 1226255
           Summary: Undefined symbol "changelog_select_event"
           Product: GlusterFS
           Version: mainline
         Component: porting
          Assignee: bugs at gluster.org
          Reporter: pellaeon at cnmc.tw
                CC: bugs at gluster.org, gluster-bugs at redhat.com



Created attachment 1031821
  --> https://bugzilla.redhat.com/attachment.cgi?id=1031821&action=edit
patch for clang

Description of problem:
When starting a volume, GlusterFS will fail with followint mesage:

[2015-05-28 14:27:39.093136] W [xlator.c:192:xlator_dynload] 0-xlator:
/usr/local/lib/glusterfs/3.8dev/xlator/features/changelog.so: Undefined symbol
"changelog_select_event"
[2015-05-28 14:27:39.093183] E [graph.y:212:volume_type] 0-parser: Volume
'vietnam-changelog', line 30: type 'features/changelog' is not valid or not
found on this machine
[2015-05-28 14:27:39.093212] E [graph.y:321:volume_end] 0-parser: "type" not
specified for volume vietnam-changelog
[2015-05-28 14:27:39.093393] E [MSGID: 100026]
[glusterfsd.c:2149:glusterfs_process_volfp] 0-: failed to construct the graph

Version-Release number of selected component (if applicable):
master at 19d7b609

How reproducible:
Build & install GlusterFS on FreeBSD 10.1 amd64.
Create a volume then start a volume.


Steps to Reproduce:
1. get glusterfs source code
2. cd glusterfs
3. ./autogen
4. ./configure
5. make
6. sudo make install
7. glusterd -p /var/run/glusterd.pid
8. gluster volume create vietnam a.gluster:/brick1/brick1
9. gluster volume start vietnam
10. see brick log file

Actual results:
Cannot start volume.

Expected results:
Volume starts.


Additional info:
This bug is caused by clang and gcc handles inline functions differently.
By writing "inline" in source files, gcc will emit standalone object code, so
it may be called externally.
But for clang, "inline" will not emit standalone object code, therefore the
"undefined symbol" error, to achieve the same behavior as in gcc, you need to
write "extern inline".

In the attachment find the patch. This patch should also work for gcc.

Reference: http://www.greenend.org.uk/rjk/tech/inline.html

-- 
You are receiving this mail because:
You are on the CC list for the bug.
You are the assignee for the bug.


More information about the Bugs mailing list