[ https://issues.apache.org/jira/browse/TS-1577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13550870#comment-13550870 ]
weijin commented on TS-1577: ---------------------------- the range field is present in the revalidate request to the origin server. the function is_response_cacheable will decide whether cache the response or not. current for 206 response it return false, I think for 416 response it should return false too. I`ll write a patch for this bug latter. > 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