We used GDB to analyse the problem, we found that librados should call their
own thread interface. But because of the same name of THREAD function, librados
call the TREAD function of ATS, so there is a malloc failed result to coredump.
when ran, the error info is:
```
*** Error in `/home/yincong/trafficserver-7.1.4/proxy/.libs/traffic_server':
malloc(): memory corruption (fast): 0x00000000010c0b60 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7f5e4)[0x7ffff58165e4]
/lib64/libc.so.6(+0x82d00)[0x7ffff5819d00]
/lib64/libc.so.6(__libc_malloc+0x4c)[0x7ffff581c84c]
/lib64/libstdc++.so.6(_Znwm+0x1d)[0x7ffff60daecd]
/lib64/libstdc++.so.6(_ZNSs4_Rep9_S_createEmmRKSaIcE+0x59)[0x7ffff6139ab9]
/lib64/libstdc++.so.6(_ZNSs4_Rep8_M_cloneERKSaIcEm+0x1b)[0x7ffff613a6cb]
/lib64/libstdc++.so.6(_ZNSs7reserveEm+0x44)[0x7ffff613a774]
/lib64/libstdc++.so.6(_ZNSs6appendEPKcm+0x4f)[0x7ffff613a9df]
/usr/lib64/ceph/libceph-common.so.0(_ZN12PerfCountersC2EP11CephContextRKSsii+0x86)[0x7fffec3dc856]
/usr/lib64/ceph/libceph-common.so.0(_ZN19PerfCountersBuilderC2EP11CephContextRKSsii+0x40)[0x7fffec3dcac0]
/lib64/librados.so.2(_ZN8FinisherC2EP11CephContextSsSs+0x1f1)[0x7ffff6437bc1]
/lib64/librados.so.2(_ZN8librados11RadosClientC1EP11CephContext+0x258)[0x7ffff6435f08]
/lib64/librados.so.2(rados_create+0xb0)[0x7ffff6405310]
```
when used static library to compile, the error info is:
```
CXXLD traffic_server
/home/adminuser/tmp/ceph-12.2.7/build/lib/libcommon.a(Thread.cc.o): In function
`Thread::~Thread()':
/home/adminuser/tmp/ceph-12.2.7/src/common/Thread.cc:54: multiple definition of
`Thread::~Thread()'
../iocore/hostdb/libinkhostdb.a(Inline.o):/home/adminuser/tmp/trafficserver-7.1.4/iocore/hostdb/../../lib/ts/Ptr.h:207:
first defined here
/home/adminuser/tmp/ceph-12.2.7/build/lib/libcommon.a(Thread.cc.o): In function
`Thread::~Thread()':
/home/adminuser/tmp/ceph-12.2.7/src/common/Thread.cc:54: multiple definition of
`Thread::~Thread()'
../iocore/hostdb/libinkhostdb.a(Inline.o):/home/adminuser/tmp/trafficserver-7.1.4/iocore/hostdb/../../lib/ts/Ptr.h:207:
first defined here
/home/adminuser/tmp/ceph-12.2.7/build/lib/libcommon.a(Thread.cc.o): In function
`Thread::~Thread()':
/home/adminuser/tmp/ceph-12.2.7/src/common/Thread.cc:54: multiple definition of
`Thread::~Thread()'
../iocore/hostdb/libinkhostdb.a(Inline.o):/home/adminuser/tmp/trafficserver-7.1.4/iocore/eventsystem/P_Thread.h:39:
first defined here
/home/adminuser/tmp/ceph-12.2.7/build/lib/libcommon.a(Thread.cc.o): In function
`Thread::Thread()':
/home/adminuser/tmp/ceph-12.2.7/src/common/Thread.cc:50: multiple definition of
`Thread::Thread()'
../iocore/eventsystem/libinkevent.a(Thread.o):/home/adminuser/tmp/trafficserver-7.1.4/iocore/eventsystem/Thread.cc:43:
first defined here
/home/adminuser/tmp/ceph-12.2.7/build/lib/libcommon.a(Thread.cc.o): In function
`Thread::Thread()':
/home/adminuser/tmp/ceph-12.2.7/src/common/Thread.cc:50: multiple definition of
`Thread::Thread()'
../iocore/eventsystem/libinkevent.a(Thread.o):/home/adminuser/tmp/trafficserver-7.1.4/iocore/eventsystem/Thread.cc:43:
first defined here
```
the debug print as:
```
(gdb)
rados_create (pcluster=0x7fffffffd1e8, id=0x0) at
/home/adminuser/tmp/ceph-12.2.7/src/librados/librados.cc:2782
2782 if (id) {
(gdb)
2785 CephContext *cct = rados_create_cct("", &iparams);
(gdb)
Reading in symbols for
/home/adminuser/tmp/ceph-12.2.7/src/common/options.cc...done.
Reading in symbols for
/home/adminuser/tmp/ceph-12.2.7/src/common/config.cc...done.
Reading in symbols for
/home/adminuser/tmp/ceph-12.2.7/src/common/ceph_context.cc...done.
Reading in symbols for
/home/adminuser/tmp/ceph-12.2.7/src/common/common_init.cc...done.
===ATS thread create
[New Thread 0x7fffe9a52700 (LWP 2248698)]
```
[ Full content available at:
https://github.com/apache/trafficserver/issues/4205 ]
This message was relayed via gitbox.apache.org for [email protected]