Zhao Yongming created TS-1574:
---------------------------------

             Summary: Range transform crash at 
RangeTransform::transform_to_range Transform.cc:842
                 Key: TS-1574
                 URL: https://issues.apache.org/jira/browse/TS-1574
             Project: Traffic Server
          Issue Type: Bug
          Components: HTTP
    Affects Versions: 3.3.0
         Environment: git master, forward proxy
            Reporter: Zhao Yongming
             Fix For: 3.3.1


I have a forward proxy that just updated to the latest git master release on 
2012-11-16, it crashed several times with the same assert:
{code}
Program terminated with signal 11, Segmentation fault.
#0  RangeTransform::transform_to_range (this=0x2b12603c2c50) at Transform.cc:842
842         if (*done_byte < (*start - 1)) {
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) 
(gdb) bt
#0  RangeTransform::transform_to_range (this=0x2b12603c2c50) at Transform.cc:842
#1  0x00000000004da440 in RangeTransform::handle_event (this=0x2b12603c2c50, 
event=<value optimized out>, edata=<value optimized out>)
    at Transform.cc:815
#2  0x0000000000654dd4 in handleEvent (this=0x2b1200404010, e=0x2b12841c0ea0, 
calling_code=1) at I_Continuation.h:146
#3  EThread::process_event (this=0x2b1200404010, e=0x2b12841c0ea0, 
calling_code=1) at UnixEThread.cc:142
#4  0x000000000065593b in EThread::execute (this=0x2b1200404010) at 
UnixEThread.cc:193
#5  0x00000000006540d2 in spawn_thread_internal (a=0x2c987d0) at Thread.cc:88
#6  0x0000003e878077f1 in start_thread () from /lib64/libpthread.so.0
#7  0x0000003e86ce5ccd in clone () from /lib64/libc.so.6
(gdb) f 1
#1  0x00000000004da440 in RangeTransform::handle_event (this=0x2b12603c2c50, 
event=<value optimized out>, edata=<value optimized out>)
    at Transform.cc:815
815           transform_to_range();
(gdb) l
810             m_output_vio->nbytes = m_done;
811             m_output_vio->reenable();
812             return 0;
813           }
814     
815           transform_to_range();
816           break;
817         }
818       }
819     
(gdb) p m_output_vio
$1 = (VIO *) 0x2b12603c2e78
(gdb) p *m_output_vio
$2 = {_cont = 0x2b12603c2c50, nbytes = 70664, ndone = 0, op = 2, buffer = {mbuf 
= 0x2b126c0b36e0, entry = 0x2b126c0b36f8}, 
  vc_server = 0x2b12603c2df8, mutex = {m_ptr = 0x2b12686700e0}}
(gdb) f 2
#2  0x0000000000654dd4 in handleEvent (this=0x2b1200404010, e=0x2b12841c0ea0, 
calling_code=1) at I_Continuation.h:146
146         return (this->*handler) (event, data);
(gdb) l
141         @param data General purpose data related to the event code 
(Processor specific).
142         @return State machine and processor specific return code.
143     
144       */
145       int handleEvent(int event = CONTINUATION_EVENT_NONE, void *data = 0) {
146         return (this->*handler) (event, data);
147       }
148     
149       /**
150         Contructor of the Continuation object. It should not be used
(gdb) bt
#0  RangeTransform::transform_to_range (this=0x2b12603c2c50) at Transform.cc:842
#1  0x00000000004da440 in RangeTransform::handle_event (this=0x2b12603c2c50, 
event=<value optimized out>, edata=<value optimized out>)
    at Transform.cc:815
#2  0x0000000000654dd4 in handleEvent (this=0x2b1200404010, e=0x2b12841c0ea0, 
calling_code=1) at I_Continuation.h:146
#3  EThread::process_event (this=0x2b1200404010, e=0x2b12841c0ea0, 
calling_code=1) at UnixEThread.cc:142
#4  0x000000000065593b in EThread::execute (this=0x2b1200404010) at 
UnixEThread.cc:193
#5  0x00000000006540d2 in spawn_thread_internal (a=0x2c987d0) at Thread.cc:88
#6  0x0000003e878077f1 in start_thread () from /lib64/libpthread.so.0
#7  0x0000003e86ce5ccd in clone () from /lib64/libc.so.6
(gdb) f 0
#0  RangeTransform::transform_to_range (this=0x2b12603c2c50) at Transform.cc:842
842         if (*done_byte < (*start - 1)) {
(gdb) l
837       done_byte = &m_ranges[m_current_range]._done_byte;
838       start = &m_ranges[m_current_range]._start;
839       avail = reader->read_avail();
840     
841       while (true) {
842         if (*done_byte < (*start - 1)) {
843           toskip = *start - *done_byte - 1;
844     
845           if (toskip > avail)
846             toskip = avail;
(gdb) p m_ranges
$4 = (RangeRecord *) 0x0
(gdb) p start
$5 = (const int64_t *) 0x0
(gdb) p avail
$6 = 70664
(gdb) p done_byte
$7 = (int64_t *) 0x10
{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