You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by "Masakazu Kitajo (JIRA)" <ji...@apache.org> on 2016/05/24 05:55:13 UTC

[jira] [Resolved] (TS-4467) Assert fails due to a wrong condition

     [ https://issues.apache.org/jira/browse/TS-4467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Masakazu Kitajo resolved TS-4467.
---------------------------------
    Resolution: Fixed

> Assert fails due to a wrong condition
> -------------------------------------
>
>                 Key: TS-4467
>                 URL: https://issues.apache.org/jira/browse/TS-4467
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: Network
>            Reporter: Masakazu Kitajo
>            Assignee: Masakazu Kitajo
>             Fix For: 7.0.0
>
>
> {noformat}
> FATAL: UnixNetVConnection.cc:995: failed assertion `niov < countof(tiovec)`
> Process 4432 stopped
> * thread #4: tid = 0x208fe8, 0x00007fff969e1f06 libsystem_kernel.dylib`__pthread_kill + 10, name = '[ET_NET 2]', stop reason = signal SIGABRT
>     frame #0: 0x00007fff969e1f06 libsystem_kernel.dylib`__pthread_kill + 10
> libsystem_kernel.dylib`__pthread_kill:
> ->  0x7fff969e1f06 <+10>: jae    0x7fff969e1f10            ; <+20>
>     0x7fff969e1f08 <+12>: movq   %rax, %rdi
>     0x7fff969e1f0b <+15>: jmp    0x7fff969dc7cd            ; cerror_nocancel
>     0x7fff969e1f10 <+20>: retq   
> (lldb) bt
> * thread #4: tid = 0x208fe8, 0x00007fff969e1f06 libsystem_kernel.dylib`__pthread_kill + 10, name = '[ET_NET 2]', stop reason = signal SIGABRT
>   * frame #0: 0x00007fff969e1f06 libsystem_kernel.dylib`__pthread_kill + 10
>     frame #1: 0x00007fff94c394ec libsystem_pthread.dylib`pthread_kill + 90
>     frame #2: 0x00007fff8cf116e7 libsystem_c.dylib`abort + 129
>     frame #3: 0x000000010159cb27 libtsutil.7.dylib`ink_abort(message_format="%s:%d: failed assertion `%s`") + 519 at ink_error.cc:79
>     frame #4: 0x0000000101593b97 libtsutil.7.dylib`::_ink_assert(expression="niov < countof(tiovec)", file="UnixNetVConnection.cc", line=995) + 71 at ink_assert.cc:37
>     frame #5: 0x00000001007a2286 traffic_server`UnixNetVConnection::load_buffer_and_write(this=0x000061800002fc80, towrite=8859, wattempted=0x0000700000285e30, total_written=0x0000700000285e10, buf=0x000061800002fe30, needs=0x0000700000285e50) + 1622 at UnixNetVConnection.cc:995
>     frame #6: 0x00000001007996b2 traffic_server`write_to_net_io(nh=0x0000000105353480, vc=0x000061800002fc80, thread=0x000000010534f800) + 4002 at UnixNetVConnection.cc:515
>     frame #7: 0x0000000100798701 traffic_server`write_to_net(nh=0x0000000105353480, vc=0x000061800002fc80, thread=0x000000010534f800) + 337 at UnixNetVConnection.cc:424
>     frame #8: 0x000000010077adac traffic_server`NetHandler::mainNetEvent(this=0x0000000105353480, event=5, e=0x000060900000d280) + 9324 at UnixNet.cc:531
>     frame #9: 0x0000000100059abb traffic_server`Continuation::handleEvent(this=0x0000000105353480, event=5, data=0x000060900000d280) + 267 at I_Continuation.h:153
>     frame #10: 0x00000001007fe316 traffic_server`EThread::process_event(this=0x000000010534f800, e=0x000060900000d280, calling_code=5) + 1350 at UnixEThread.cc:148
>     frame #11: 0x00000001007ff9a9 traffic_server`EThread::execute(this=0x000000010534f800) + 3993 at UnixEThread.cc:275
>     frame #12: 0x00000001007fc7c8 traffic_server`spawn_thread_internal(a=0x00006040000110d0) + 456 at Thread.cc:84
>     frame #13: 0x00007fff94c3699d libsystem_pthread.dylib`_pthread_body + 131
>     frame #14: 0x00007fff94c3691a libsystem_pthread.dylib`_pthread_start + 168
>     frame #15: 0x00007fff94c34351 libsystem_pthread.dylib`thread_start + 13
> (lldb) f 5
> frame #5: 0x00000001007a2286 traffic_server`UnixNetVConnection::load_buffer_and_write(this=0x000061800002fc80, towrite=8859, wattempted=0x0000700000285e30, total_written=0x0000700000285e10, buf=0x000061800002fe30, needs=0x0000700000285e50) + 1622 at UnixNetVConnection.cc:995
>    992      wattempted = total_written - total_written_last;
>    993  
>    994      ink_assert(niov > 0);
> -> 995      ink_assert(niov < countof(tiovec));
>    996      r = socketManager.writev(con.fd, &tiovec[0], niov);
>    997  
>    998      if (origin_trace) {
> (lldb) p niov
> (unsigned int) $1 = 16
> {noformat}
> SocketManager::writev
> {code}
> SocketManager::writev(int fd, struct iovec *vector, size_t count)
> {
>   int64_t r;
>   do {
>     if (likely((r = ::writev(fd, vector, count)) >= 0))
>       break;
>     r = -errno;
>   } while (transient_error());
>   return r;
> }
> {code}
> man writev
> {quote}
> ssize_t writev(int fildes, const struct iovec *iov, int iovcnt);
> writev() performs the same action, but gathers the output data from the iovcnt buffers specified by the members of the iov array: iov\[0], iov\[1], ..., iov\[iovcnt-1].
> {quote}
> These conditions should be {{niov <= countof(tiovec)}}.
> {noformat}
> $ grep -Ir "niov < countof(tiovec)" iocore/
> iocore//net/SSLNetVConnection.cc:      ink_assert(niov < countof(tiovec));
> iocore//net/UnixNetVConnection.cc:      ink_assert(niov < countof(tiovec));
> iocore//net/UnixNetVConnection.cc:    ink_assert(niov < countof(tiovec));
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)