[ https://issues.apache.org/jira/browse/TS-877?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13066020#comment-13066020 ]
Alan M. Carroll commented on TS-877: ------------------------------------ I don't think this has anything to do with the cache on disk. My reading of the code is that this involves reading from live cache fills. SelectFromAlternates is picking the particular writer (cache fill) for a reader and it's picked on that's invalid (m_alt == NULL). You can see that an effort is made to prevent the selection vector from containing an invalid entry but it's not clear to me from looking at code (primarily CacheVC::openReadChooseWriter) how entries that "time out" are purged. Note that current writers are scanned for validity and removed, but the vector itself is not cleared. Moreover, the vector is a class member so it can contain cruft from previous operations on the class. One thing to get more information would be to put a check at the start of that method that loops over the vector and checks for invalid entries and see if that goes off. > Segfault caused by HTTPInfo::object_key_get > -------------------------------------------- > > Key: TS-877 > URL: https://issues.apache.org/jira/browse/TS-877 > Project: Traffic Server > Issue Type: Bug > Components: HTTP > Affects Versions: 3.0.0 > Environment: Ubuntu 10.04tls 64bit > Reporter: Kingsley Foreman > Labels: crash > Fix For: 3.1.0 > > > Segfault caused by HTTPInfo::object_key_get > Reading symbols from /usr/lib/libtsutil.so.3...done. > Loaded symbols for /usr/lib/libtsutil.so.3 > Reading symbols from /lib/libpthread.so.0...(no debugging symbols > found)...done. > Loaded symbols for /lib/libpthread.so.0 > Reading symbols from /lib/libnsl.so.1...(no debugging symbols found)...done. > Loaded symbols for /lib/libnsl.so.1 > Reading symbols from /lib/libresolv.so.2...(no debugging symbols > found)...done. > Loaded symbols for /lib/libresolv.so.2 > Reading symbols from /lib/librt.so.1...(no debugging symbols found)...done. > Loaded symbols for /lib/librt.so.1 > Reading symbols from /lib/libpcre.so.3...(no debugging symbols found)...done. > Loaded symbols for /lib/libpcre.so.3 > Reading symbols from /lib/libssl.so.0.9.8...(no debugging symbols > found)...done. > Loaded symbols for /lib/libssl.so.0.9.8 > Reading symbols from /lib/libcrypto.so.0.9.8...(no debugging symbols > found)...done. > Loaded symbols for /lib/libcrypto.so.0.9.8 > Reading symbols from /usr/lib/libtcl8.4.so.0...(no debugging symbols > found)...done. > Loaded symbols for /usr/lib/libtcl8.4.so.0 > Reading symbols from /lib/libdl.so.2...(no debugging symbols found)...done. > Loaded symbols for /lib/libdl.so.2 > Reading symbols from /lib/libexpat.so.1...(no debugging symbols found)...done. > Loaded symbols for /lib/libexpat.so.1 > Reading symbols from /lib/libz.so.1...(no debugging symbols found)...done. > Loaded symbols for /lib/libz.so.1 > Reading symbols from /usr/lib/libstdc++.so.6...(no debugging symbols > found)...done. > Loaded symbols for /usr/lib/libstdc++.so.6 > Reading symbols from /lib/libm.so.6...(no debugging symbols found)...done. > Loaded symbols for /lib/libm.so.6 > Reading symbols from /lib/libgcc_s.so.1...(no debugging symbols found)...done. > Loaded symbols for /lib/libgcc_s.so.1 > Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done. > Loaded symbols for /lib/libc.so.6 > Reading symbols from /lib64/ld-linux-x86-64.so.2...(no debugging symbols > found)...done. > Loaded symbols for /lib64/ld-linux-x86-64.so.2 > Reading symbols from /lib/libnss_files.so.2...(no debugging symbols > found)...done. > Loaded symbols for /lib/libnss_files.so.2 > Reading symbols from /lib/libnss_dns.so.2...(no debugging symbols > found)...done. > Loaded symbols for /lib/libnss_dns.so.2 > Reading symbols from /usr/libexec/trafficserver/header_filter.so...done. > Loaded symbols for /usr/libexec/trafficserver/header_filter.so > Core was generated by `/usr/bin/traffic_server -M -A,9:X'. > Program terminated with signal 11, Segmentation fault. > #0 0x00000000005975ef in HTTPInfo::object_key_get (this=0x2ae710002c58) at > ../../proxy/hdrs/HTTP.h:1375 > 1375 ((int32_t *) & val)[0] = m_alt->m_object_key[0]; > (gdb) bt > #0 0x00000000005975ef in HTTPInfo::object_key_get (this=0x2ae710002c58) at > ../../proxy/hdrs/HTTP.h:1375 > #1 0x0000000000592c72 in HttpTransactCache::SelectFromAlternates > (cache_vector=0x1c96568, client_request=0x1c96528, > http_config_params=0x2ae66c4b5228) > at HttpTransactCache.cc:213 > #2 0x00000000006cb4f1 in CacheVC::openReadChooseWriter (this=0x1c96460, > event=2, e=0x1e6d6d0) at CacheRead.cc:262 > #3 0x00000000006cbc82 in CacheVC::openReadFromWriter (this=0x1c96460, > event=2, e=0x1e6d6d0) at CacheRead.cc:332 > #4 0x00000000004e63e8 in Continuation::handleEvent (this=0x1c96460, event=2, > data=0x1e6d6d0) at ../iocore/eventsystem/I_Continuation.h:146 > #5 0x000000000072055d in EThread::process_event (this=0x2ae646b46010, > e=0x1e6d6d0, calling_code=2) at UnixEThread.cc:140 > #6 0x000000000072090d in EThread::execute (this=0x2ae646b46010) at > UnixEThread.cc:217 > #7 0x000000000071ec32 in spawn_thread_internal (a=0x1a14380) at Thread.cc:88 > #8 0x00002ae643f639ca in start_thread () from /lib/libpthread.so.0 > #9 0x00002ae64616970d in clone () from /lib/libc.so.6 > #10 0x0000000000000000 in ?? () > (gdb) print *this > $1 = {m_alt = 0x0} -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira