trafficserver-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Daniel Morilha <dmori...@gmail.com>
Subject Re: coredump on TSVConnWrite
Date Thu, 05 Dec 2013 17:00:27 GMT
Forgot to mention this is ats 402 9 and 401 7 thanks
On Dec 5, 2013 8:57 AM, "Daniel Morilha" <dmorilha@gmail.com> wrote:

> Hi,
>
> I am facing sporadic SEGFAULTS when calling TSVConnWrite from a custom
> plug-in that I am not able to easily reproduce.
>
> TSVConnWrite (connp=0x2aec640b5620, contp=0x2aec640b5da0,
> readerp=0x2aec7c110c88, nbytes=9223372036854775807) at InkAPI.cc:6258
>
> ​Things make me believe this is coming from the ​FORCE_PLUGIN_MUTEX macro;
> if not it might be then subsequent call to vc->do_io_write().
>
> I am able to see the contp has a "valid" mutex.
>
> Any ideas from here? Any good practices I should be taking before calling
> TSVConnWrite on my code?
>
> I am dumping a lot of data so it might ring the bells for people more
> familiar with the TS internals...
>
> Thanks in advance...
>
>
>
>
> *(gdb) bt*
> #0  0x0000000000000000 in ?? ()
> #1  0x00000000004b33de in TSVConnWrite (connp=0x2aec640b5620,
> contp=0x2aec640b5da0,
>     readerp=0x2aec7c110c88, nbytes=9223372036854775807) at InkAPI.cc:6258
> #2  0x00002aec00ae11dc in write (s=9223372036854775807, r=<optimized out>,
> c=0x2aec640b5da0,
>     v=<optimized out>) at ats.hpp:285
> #3  write (r=<optimized out>, c=0x2aec640b5da0, v=<optimized out>) at
> ats.hpp:289
> #4  Output (continuation=0x2aec640b5da0, consumer=<optimized out>,
> this=0x2aec3c03de50) at ats.hpp:1508
>
>
>
>
> *(gdb) info line 6258*
> Line 6258 of "InkAPI.cc"
>    starts at address 0x4b33c8 <TSVConnWrite(TSVConn, TSCont,
> TSIOBufferReader, int64_t)+136>
>    and ends at 0x4b33e9 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+169>.
>
>
>
> *(gdb) disas 0x00000000004b33b4,0x00000000004b3410*
> Dump of assembler code from 0x4b33b4 to 0x4b3410:
>    0x00000000004b33b4 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+116>: callq  0x4850c8 <pthread_getspecific@plt>
>    0x00000000004b33b9 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+121>: mov    0x18(%rbx),%rsi
>    0x00000000004b33bd <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+125>: mov    %rax,%rdx
>    0x00000000004b33c0 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+128>: mov    %rsp,%rdi
>    0x00000000004b33c3 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+131>: callq  0x4ba130 <MutexLock::set_and_take(ProxyMutex*,
> EThread*)>
>    *0x00000000004b33c8* <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+136>: mov    0x0(%rbp),%rax
>    0x00000000004b33cc <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+140>: xor    %r8d,%r8d
>    0x00000000004b33cf <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+143>: mov    %r14,%rcx
>    0x00000000004b33d2 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+146>: mov    %r13,%rdx
>    0x00000000004b33d5 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+149>: mov    %rbx,%rsi
>    0x00000000004b33d8 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+152>: mov    %rbp,%rdi
>    0x00000000004b33db <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+155>: callq  *0x18(%rax)
> *=> *0x00000000004b33de <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+158>: mov    %rax,%rbx
>    0x00000000004b33e1 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+161>: mov    %rsp,%rdi
>    0x00000000004b33e4 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+164>: callq  0x4ba5e0 <MutexLock::~MutexLock()>
>    *0x00000000004b33e9* <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+169>: mov    %rbx,%rax
>    0x00000000004b33ec <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+172>: mov    0x18(%rsp),%rbp
>    0x00000000004b33f1 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+177>: mov    0x10(%rsp),%rbx
>    0x00000000004b33f6 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+182>: mov    0x20(%rsp),%r12
>    0x00000000004b33fb <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+187>: mov    0x28(%rsp),%r13
>    0x00000000004b3400 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+192>: mov    0x30(%rsp),%r14
>    0x00000000004b3405 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+197>: add    $0x38,%rsp
>    0x00000000004b3409 <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+201>: retq
>    0x00000000004b340a <TSVConnWrite(TSVConn, TSCont, TSIOBufferReader,
> int64_t)+202>: nopw   0x0(%rax,%rax,1)
> End of assembler dump.
>
>
>
> *​​(gdb) info vtbl *vc*
> vtable for 'VConnection' @ 0x6adbd0 (subobject @ 0x2aec640b5620):
> [0]: 0x4bb740 <INKVConnInternal::~INKVConnInternal()>
> [1]: 0x4bb650 <INKVConnInternal::~INKVConnInternal()>
> [2]: 0x4b2390 <INKVConnInternal::do_io_read(Continuation*, long,
> MIOBuffer*)>
> *​​[3]: 0x4b2f70 <INKVConnInternal::do_io_write(Continuation*, long,
> IOBufferReader*, bool)>*
> [4]: 0x4b2510 <INKVConnInternal::do_io_close(int)>
> [5]: 0x4b9780 <INKVConnInternal::do_io_shutdown(ShutdownHowTo_t)>
> [6]: 0x5e8a20 <VConnection::set_continuation(VIO*, Continuation*)>
> [7]: 0x4b9310 <INKVConnInternal::reenable(VIO*)>
> [8]: 0x5e8a40 <VConnection::reenable_re(VIO*)>
> [9]: 0x4a4b20 <INKVConnInternal::get_data(int, void*)>
> [10]: 0x4a4b90 <INKVConnInternal::set_data(int, void*)>
>
>
>
> (gdb) set print object on
> (gdb) print *vc
> $1 = (INKVConnInternal) {<INKContInternal> = {<DummyVConnection> =
> {<VConnection> = {<Continuation> = {<force_VFPT_to_top> =
> {_vptr.force_VFPT_to_top = 0x6adbd0 <vtable for INKVConnInternal+16>},
>           handler = (int (Continuation::*)(Continuation * const, int,
>     void *)) 0x4b9460 <INKVConnInternal::handle_event(int, void*)>, mutex
> = {m_ptr = 0x2aec28017a90},
>           link = {<SLink<Continuation>> = {next = 0x0}, prev = 0x0}},
> lerrno = 0}, <No data fields>},
>     mdata = 0x2aec7c0bc060,
>     m_event_func = 0x2aec00adfa90 <ts::continuation::(anonymous
> namespace)::handle<ts::Transaction::Transformer<(anonymous
> namespace)::SecureSearch> >(TSCont, TSEvent, void*)>, m_event_count = 1,
> m_closed = 0,
>     m_deletable = 0, m_deleted = 0, m_free_magic =
> INKCONT_INTERN_MAGIC_ALIVE}, m_read_vio = {
>     _cont = 0x0, nbytes = 0, ndone = 0, op = 0, buffer = {mbuf = 0x0,
> entry = 0x0}, vc_server = 0x0,
>     mutex = {m_ptr = 0x0}}, m_write_vio = {_cont = 0x2aec50170750, nbytes
> = 9223372036854775807,
>     ndone = 0, op = 2, buffer = {mbuf = 0x4214a00, entry = 0x4214a40},
> vc_server = 0x2aec640b5620,
>     mutex = {m_ptr = 0x2aec28017a90}}, m_output_vc = 0x2aec640bae40}
>
>
>
>
> --
> Daniel Morilha (dmorilha@gmail.com)
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message