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:48:12 UTC
[jira] [Assigned] (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 reassigned TS-4467:
-----------------------------------
Assignee: Masakazu Kitajo
> 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)