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]

Reply via email to