[ 
https://issues.apache.org/jira/browse/TS-1577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13549673#comment-13549673
 ] 

Alan M. Carroll commented on TS-1577:
-------------------------------------

In the case we are looking at ATS will make a revalidate request to the origin 
server based on a range request from the client. That means the client request 
header has a Range: field. That field is present in the the revalidate request 
to the origin server, or it is not.

If present then the reply must not be cached. How is that done? The post 3.2 
code did this by tunneling the client request to the server.

If not present then the reply must be transformed because the origin server 
reply will be the entire content but the client requested only a range. How is 
that done?
                
> Crash report: RangeTransform::change_response_header at Transform.cc:995
> ------------------------------------------------------------------------
>
>                 Key: TS-1577
>                 URL: https://issues.apache.org/jira/browse/TS-1577
>             Project: Traffic Server
>          Issue Type: Bug
>          Components: HTTP
>    Affects Versions: 3.3.0
>         Environment: git master version
>            Reporter: Zhao Yongming
>            Assignee: weijin
>            Priority: Critical
>             Fix For: 3.3.1
>
>         Attachments: ts-1574.diff
>
>
> This may or may not relate to TS-1574, I'd like track this issue another 
> thread here.
> {code}
> Core was generated by `/usr/bin/traffic_server -M --httpport 8080:fd=12'.
> Program terminated with signal 6, Aborted.
> #0  0x0000003e86c32885 in raise () from /lib64/libc.so.6
> Missing separate debuginfos, use: debuginfo-install 
> expat-2.0.1-11.el6_2.x86_64 glibc-2.12-1.47.el6_2.9.x86_64 
> keyutils-libs-1.4-3.el6.x86_64 krb5-libs-1.9-22.el6_2.1.x86_64 
> libcom_err-1.41.12-11.el6.x86_64 libgcc-4.4.6-3.el6.x86_64 
> libselinux-2.0.94-5.2.el6.x86_64 libstdc++-4.4.6-3.el6.x86_64 
> openssl-1.0.0-20.el6_2.4.x86_64 pcre-7.8-3.1.el6.x86_64 
> tcl-8.5.7-6.el6.x86_64 xz-libs-4.999.9-0.3.beta.20091007git.el6.x86_64 
> zlib-1.2.3-27.el6.x86_64
> (gdb) bt
> #0  0x0000003e86c32885 in raise () from /lib64/libc.so.6
> #1  0x0000003e86c34065 in abort () from /lib64/libc.so.6
> #2  0x00000035c8013f19 in ink_die_die_die (retval=30342) at ink_error.cc:43
> #3  0x00000035c8014194 in ink_fatal_va(int, const char *, typedef 
> __va_list_tag __va_list_tag *) (return_code=1, 
>     message_format=<value optimized out>, ap=0x2b0b8fcc3ba0) at 
> ink_error.cc:65
> #4  0x00000035c80142c8 in ink_fatal (return_code=30342, message_format=0x7693 
> <Address 0x7693 out of bounds>) at ink_error.cc:73
> #5  0x00000035c8012c3f in _ink_assert (expression=0x0, file=0x6 <Address 0x6 
> out of bounds>, line=-1) at ink_assert.cc:38
> #6  0x00000000004d671c in RangeTransform::change_response_header 
> (this=0x2b0be4500bf0) at Transform.cc:995
> #7  0x00000000004da4cd in RangeTransform::handle_event (this=0x2b0be4500bf0, 
> event=<value optimized out>, edata=<value optimized out>)
>     at Transform.cc:791
> #8  0x0000000000654dd4 in handleEvent (this=0x2b0b8e4ad010, e=0x34aff40, 
> calling_code=1) at I_Continuation.h:146
> #9  EThread::process_event (this=0x2b0b8e4ad010, e=0x34aff40, calling_code=1) 
> at UnixEThread.cc:142
> #10 0x000000000065593b in EThread::execute (this=0x2b0b8e4ad010) at 
> UnixEThread.cc:193
> #11 0x00000000006540d2 in spawn_thread_internal (a=0x2c79a50) at Thread.cc:88
> #12 0x0000003e878077f1 in start_thread () from /lib64/libpthread.so.0
> #13 0x0000003e86ce5ccd in clone () from /lib64/libc.so.6
> (gdb) f 6
> #6  0x00000000004d671c in RangeTransform::change_response_header 
> (this=0x2b0be4500bf0) at Transform.cc:995
> 995     
> ink_release_assert(m_transform_resp->field_find(MIME_FIELD_CONTENT_RANGE, 
> MIME_LEN_CONTENT_RANGE) == NULL);
> (gdb) p this
> $1 = (RangeTransform * const) 0x2b0be4500bf0
> (gdb) p *this
> $2 = {<INKVConnInternal> = {<INKContInternal> = {<DummyVConnection> = 
> {<VConnection> = {<Continuation> = {<force_VFPT_to_top> = {
>               _vptr.force_VFPT_to_top = 0x667970}, handler = (int 
> (Continuation::*)(Continuation *, int, 
>     void *)) 0x4da200 <RangeTransform::handle_event(int, void*)>, mutex = 
> {m_ptr = 0x2b0bf8216110}, link = {<SLink<Continuation>> = {next = 0x0}, 
>               prev = 0x0}}, lerrno = 0}, <No data fields>}, mdata = 0x0, 
> m_event_func = 0, m_event_count = 0, m_closed = 0, m_deletable = 0, 
>       m_deleted = 0, m_free_magic = INKCONT_INTERN_MAGIC_ALIVE}, m_read_vio = 
> {_cont = 0x0, nbytes = 0, ndone = 0, op = 0, buffer = {mbuf = 0x0, 
>         entry = 0x0}, vc_server = 0x0, mutex = {m_ptr = 0x0}}, m_write_vio = 
> {_cont = 0x2b0f9168f020, nbytes = 20480, ndone = 0, op = 2, buffer = {
>         mbuf = 0x2b0c0407fdd0, entry = 0x2b0c0407fe10}, vc_server = 
> 0x2b0be4500bf0, mutex = {m_ptr = 0x2b0bf8216110}}, 
>     m_output_vc = 0x2b0be459f048}, m_output_buf = 0x33b7ca0, m_output_reader 
> = 0x33b7cb8, m_transform_resp = 0x2b0f9168dc88, 
>   m_output_vio = 0x2b0be459f0c8, m_unsatisfiable_range = false, 
> m_range_content_length = 0, m_num_chars_for_cl = 1, m_num_range_fields = -1, 
>   m_current_range = 0, 
>   m_content_type = 0x2b1216ea6ac0 "application/octet-stream\r\nContent-Range: 
> bytes 0-20479/119091\r\nContent-Length: 20480\r\nConnection: 
> keep-alive\r\nDate: Sun, 18 Nov 2012 13:30:05 GMT\r\nServer: 
> apache\r\n\r\n\343k\031P", m_content_type_len = 24, m_ranges = 
> 0x2b0be45bda90, 
>   m_output_cl = 20480, m_done = 0}
> (gdb) p m_ranges
> $3 = (RangeRecord *) 0x2b0be45bda90
> (gdb) p *m_ranges
> $4 = {_start = 20480, _end = 40959, _done_byte = -1}
> (gdb) p *m_transform_resp
> $1 = {<MIMEHdr> = {<HdrHeapSDKHandle> = {m_heap = 0x2b0f914ec010}, m_mime = 
> 0x2b0f914ec0c8}, m_http = 0x2b0f914ec098, 
>   m_url_cached = {<HdrHeapSDKHandle> = {m_heap = 0x0}, m_url_impl = 0x0}, 
> m_host_mime = 0x0, m_host_length = 0, m_port = 0, m_target_cached = false, 
>   m_target_in_url = false, m_port_in_header = false}
> (gdb) p m_transform_resp->m_heap 
> $2 = (HdrHeap *) 0x2b0f914ec010
> (gdb) p *m_transform_resp->m_heap 
> $3 = {m_magic = 2882404077, m_free_start = 0x2b0f914ec318 "\002p", 
> m_data_start = 0x2b0f914ec098 "\003\060", m_size = 2048, m_writeable = true, 
>   m_next = 0x0, m_free_size = 1272, m_read_write_heap = {m_ptr = 0x0}, 
> m_ronly_heap = {{m_ref_count_ptr = {m_ptr = 0x2b0c0855d340}, 
>       m_heap_start = 0x2b1216ea69e0 "HTTP/1.0 200 OK\r\nSet-Cookie: 
> BAIDUID=7DC7AB09AB06C107A53B6D958AE0EA65:FG=1; max-age=31536000; expires=Mon, 
> 18-Nov-13 13:30:05 GMT; domain=.baidu.com; path=/; version=1\r\nP3P: CP=\" 
> OTI DSP COR IVA OUR I"..., m_heap_len = 389, m_locked = false}, {
>       m_ref_count_ptr = {m_ptr = 0x0}, m_heap_start = 0x0, m_heap_len = 270, 
> m_locked = false}, {m_ref_count_ptr = {m_ptr = 0x0}, 
>       m_heap_start = 0x0, m_heap_len = 0, m_locked = false}}, 
> m_lost_string_space = 167}
> {code}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to