You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficserver.apache.org by GitBox <gi...@apache.org> on 2020/06/04 03:49:05 UTC

[GitHub] [trafficserver] sudheerv opened a new issue #6850: HostDBInfo::alloc() assert for iobuf_index >= 0

sudheerv opened a new issue #6850:
URL: https://github.com/apache/trafficserver/issues/6850


   Noticed another assert in ats9 this time in HostDBInfo::alloc() and this assert is slightly more clear. than https://github.com/apache/trafficserver/issues/6849 which could well be due to the same issue.
   
   `proxy.config.io.max_buffer_size` is set to the default value of 32K in our prod, and the size that's being asked here is larger than that (43K). As a result, `iobuffer_size_to_index()` returns -43K (since the max_io_buf_size is set to 32K or iobuf index = 8). 
   
   It's not clear yet why this assert isn't tripping in our non-ats9 prod - the code seems to be identical in our non-ats9 version as well, so, it's very surprising that this assert never once fired :-/
   
   
   ```
   #0  0x00002ab14f55d207 in raise () from /lib64/libc.so.6
   (gdb) bt
   #0  0x00002ab14f55d207 in raise () from /lib64/libc.so.6
   #1  0x00002ab14f55e8f8 in abort () from /lib64/libc.so.6
   #2  0x00002ab14cc1d35b in ink_abort (message_format=message_format@entry=0x2ab14cc9a2a7 "%s:%d: failed assertion `%s`") at ink_error.cc:99
   #3  0x00002ab14cc1a045 in _ink_assert (expression=expression@entry=0x80e86b "iobuffer_index >= 0", file=file@entry=0x80e855 "./I_HostDBProcessor.h", line=line@entry=158) at ink_assert.cc:37
   #4  0x0000000000674de4 in HostDBInfo::alloc (size=43768, this=<optimized out>) at ./I_HostDBProcessor.h:158
   #5  0x0000000000673037 in HostDBContinuation::dnsEvent (this=0x2ab1527a8ea0, event=<optimized out>, e=0x2ab156660000) at HostDB.cc:1302
   #6  0x00000000006869a9 in handleEvent (data=0x2ab156660000, event=600, this=0x2ab1527a8ea0) at /export/content/data/multiproduct-post-commit/i001/workspace/ats-core_dda77c0caf7d2719229197d3b11eaa30288bdcd5/ats9/src/iocore/eventsystem/I_Continuation.h:190
   #7  DNSEntry::postOneEvent (this=0x2ab1639f5630) at DNS.cc:1450
   #8  0x00000000007bf371 in handleEvent (data=0x2ab161663c20, event=1, this=0x2ab1639f5630) at I_Continuation.h:190
   #9  EThread::process_event (this=this@entry=0x2ab155806000, e=e@entry=0x2ab161663c20, calling_code=1) at UnixEThread.cc:127
   #10 0x00000000007bf9ae in EThread::process_queue (this=this@entry=0x2ab155806000, NegativeQueue=NegativeQueue@entry=0x2ab163504e00, ev_count=ev_count@entry=0x2ab163504dfc, nq_count=nq_count@entry=0x2ab163504df8) at UnixEThread.cc:162
   #11 0x00000000007bff3b in EThread::execute_regular (this=this@entry=0x2ab155806000) at UnixEThread.cc:222
   #12 0x00000000007c0712 in EThread::execute (this=0x2ab155806000) at UnixEThread.cc:327
   #13 0x00000000007beab9 in spawn_thread_internal (a=0x2ab15096b740) at Thread.cc:92
   #14 0x00002ab14e873dd5 in start_thread () from /lib64/libpthread.so.0
   #15 0x00002ab14f624ead in clone () from /lib64/libc.so.6
   (gdb) f 4
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [trafficserver] sudheerv commented on issue #6850: HostDBInfo::alloc() assert for iobuf_index >= 0

Posted by GitBox <gi...@apache.org>.
sudheerv commented on issue #6850:
URL: https://github.com/apache/trafficserver/issues/6850#issuecomment-641021304


   https://github.com/apache/trafficserver/pull/6869 fixes this issue


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [trafficserver] sudheerv commented on issue #6850: HostDBInfo::alloc() assert for iobuf_index >= 0

Posted by GitBox <gi...@apache.org>.
sudheerv commented on issue #6850:
URL: https://github.com/apache/trafficserver/issues/6850#issuecomment-646386531


   Closing this issue manually as I messed up putting in the right text on the PR :(


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [trafficserver] sudheerv closed issue #6850: HostDBInfo::alloc() assert for iobuf_index >= 0

Posted by GitBox <gi...@apache.org>.
sudheerv closed issue #6850:
URL: https://github.com/apache/trafficserver/issues/6850


   


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org



[GitHub] [trafficserver] sudheerv commented on issue #6850: HostDBInfo::alloc() assert for iobuf_index >= 0

Posted by GitBox <gi...@apache.org>.
sudheerv commented on issue #6850:
URL: https://github.com/apache/trafficserver/issues/6850#issuecomment-638970068


   Dug in a bit more and I think I understand the reason why the assert never fired in our non-ats9 version.
   
   It looks like the `HostDBInfo` is 8 bytes larger in ats9 (compared to ats6 version) and that (when multiplied by number of RR records) pushes the alloc size over the 32K boundary. We were just lucky to not hit the assert in ats6.
   
   Comparing what is contributing to the increase though, I don't see any differences in the actual fields in `HostDBInfo` between the two versions, however, there does seem to be some rearrangement of field (specifically, `iobuffer_index` has been moved towards the end of the struct definition as opposed to being at the top in ats6 version). This likely would have disturbed the struct alignment and likely added 8 bytes to the size of the struct.
   
   In the ats9 version
   ```
   (gdb) p sizeof(HostDBRoundRobin)
   $1 = 24
   (gdb) p sizeof(HostDBInfo)
   $2 = 96
   ```
   
   In the ats6 version
   
   ```
   1347	HostDB.cc: No such file or directory.
   (gdb) p sizeof(HostDBInfo)
   $1 = 88
   (gdb) p sizeof(HostDBRoundRobin)
   $2 = 24
   (gdb) l HostDBInfo
   ```


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
users@infra.apache.org