[ 
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

        

Reply via email to