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

Fix the linkage errors caused by duplicate symbols #1936

Merged
merged 1 commit into from
Oct 14, 2022

Conversation

adonis0147
Copy link
Contributor

@adonis0147 adonis0147 commented Sep 26, 2022

Recently, I met some linkage errors while using LLD linker to compile the source code of Apache Doris. The issue looks like #1809 .

src/butil/class_name.h

namespace detail {
template <typename T> struct ClassNameHelper { static std::string name; };
template <typename T> std::string ClassNameHelper<T>::name = demangle(typeid(T).name());
}

The linkage of ClassNameHelper<T>::name here is external due to it is variable template and it may cause the duplicate symbols error.

Some ways to fix it:

  1. In C++ 17, use inline variable.
  2. Before C++ 17, use unnamed namespace to make the linkage of ClassNameHelper<T>::name internal.

In this PR, I suggest using the second way to fix it.

@wwbmmm wwbmmm merged commit 6fed7b2 into apache:master Oct 14, 2022
@adonis0147 adonis0147 deleted the linkage branch October 14, 2022 07:43
guodongxiaren added a commit to guodongxiaren/incubator-brpc that referenced this pull request Nov 21, 2022
* enable brpc use rdma

* Fix override issue in pb 3.21

* fix rpc_replay can't send request equably (apache#1910)

* fix rpc_replay can't send request equably

* 类型修改

* fix coredump cause by uri like 'host:port/hotspots/growth_non_responsive?console=abc' (apache#1278)

* expose logging::PrintLog

* Support -escape_log

* Fix thrift_message pb override issue

* Chore: rework Bazel build system

* remove white space from default value of bvar_dump_tabs

* Update oncall.md

* Fix not to abort when checking the errorno with unicode string (apache#1142)

* fix a typo in grpc protocol (apache#1924)

* fix a typo in grpc protocol

* ERESPONSE->EREQUEST

Co-authored-by: 薛传宇 <xuechuanyu@cmss.chinamobile.com>

* [user-cases] add Apache Doris user case

* add nacos naming service (apache#1922)

* [document] Add vcpkg instruction step (apache#1925)

* http response uses brpc error code (apache#1927)

* http response uses brpc error code

* add gflag for using http error code

* add unit test of http error code

* Update Oncall record

* Fix bvar compile error (apache#1937)

* Fix bug butex_wait failed with timeout (apache#1917)

* Fix bug butex_wait failed with timeout

Co-authored-by: XiguoHu <huxiguo@baidu.com>

* fix issues in FlatMap

* Update release_cn.md

* brpc在BaikalDB中的应用

* Update getting_started.md

* fix(rpc_replay) continue when failed to init channel (apache#1938)

* fix(rpc_replay) continue when failed to init channel

* check supported_connection_type

* check supported_connection_type

* check supported_connection_type

* fix lint

* Update cases.md (apache#1944)

* fix rpc_press.md (apache#1942)

Signed-off-by: fan <yfan3763@gmail.com>

Signed-off-by: fan <yfan3763@gmail.com>

* fix typo in json2pb doc (apache#1939)

* Update oncall.md (apache#1949)

* Update release_cn.md

* Update RELEASE_VERSION

* Update CMakeLists.txt

* Update brpc.spec

* Update release_cn.md

* Update release_cn.md

* Update release_cn.md

* add pull_request_template.md (apache#1952)

Signed-off-by: fan <yfan3763@gmail.com>

Signed-off-by: fan <yfan3763@gmail.com>

* Fix the linkage errors caused by duplicate symbols (apache#1936)

* Fix "sched_to itself" error when buidling by Clang on Linux aarch64 (apache#1950)

* docs: fix some typos

Signed-off-by: cui fliter <imcusg@gmail.com>

* Fix source file mode

* rpm: support RHEL9

* Update oncall.md

* Update newcommitter.md

* fix arena cleared early when parse redis message

* community: Update oncall.md (apache#1960)

Co-authored-by: lei.li <lei.li@clickzetta.com>

* Reduce UT log output

* Update release_cn.md

* Update release_cn.md

Update brpc's brief introduction in Announce mail.

* Update release_cn.md

* Macos workflow (#10)

* fix typo

* delete bazel from mac workflow

* fix exceptation value for mac ut

* delete test

* Create ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

* Update ci_linux.yml

Signed-off-by: fan <yfan3763@gmail.com>
Signed-off-by: cui fliter <imcusg@gmail.com>
Co-authored-by: Tuvie <lizhaogeng1989@gmail.com>
Co-authored-by: wwbmmm <wwbmmm@163.com>
Co-authored-by: bumingchun <bumingchun@126.com>
Co-authored-by: Yingchun Lai <acelyc1112009@gmail.com>
Co-authored-by: gejun.0 <gejun.0@bytedance.com>
Co-authored-by: Jiashun Zhu <zhujiashun2010@gmail.com>
Co-authored-by: Shuai Zhang <zhangshuai.ustc@gmail.com>
Co-authored-by: yyweii <thymene@gmail.com>
Co-authored-by: tobe <tobeg3oogle@gmail.com>
Co-authored-by: bbbezxcy <bbezxcy@qq.com>
Co-authored-by: 薛传宇 <xuechuanyu@cmss.chinamobile.com>
Co-authored-by: morningman <morningman@163.com>
Co-authored-by: Jack·Boos·Yu <47264268+JackBoosY@users.noreply.github.com>
Co-authored-by: Tanzhongyi(Jerry Tan) <jerrytan@apache.org>
Co-authored-by: chenBright <chenguangming@bigo.sg>
Co-authored-by: lei he <lhestz@163.com>
Co-authored-by: Chengx <chengxiang085@gmail.com>
Co-authored-by: HU <uestc.hugo@gmail.com>
Co-authored-by: XiguoHu <huxiguo@baidu.com>
Co-authored-by: Tao Liu <liutao04@baidu.com>
Co-authored-by: day253 <9634619+day253@users.noreply.github.com>
Co-authored-by: ds <ehds@qq.com>
Co-authored-by: fan <75058860+fansehep@users.noreply.github.com>
Co-authored-by: serverglen <serverglen@gmail.com>
Co-authored-by: Adonis Ling <adonis0147@gmail.com>
Co-authored-by: cui fliter <imcusg@gmail.com>
Co-authored-by: Xiaofeng Wang <wasphin@gmail.com>
Co-authored-by: jiumei <jiumei@xiaohongshu.com>
Co-authored-by: LorinLee <lorinlee1996@gmail.com>
Co-authored-by: lei.li <lei.li@clickzetta.com>
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

Successfully merging this pull request may close these issues.

None yet

2 participants