Uploaded image for project: 'Traffic Server'
  1. Traffic Server
  2. TS-937

EThread::execute still processing cancelled event

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.0.1, 2.1.9
    • 3.1.3
    • Core
    • None
    • RHEL6

    Description

      The included GDB log will show that ATS is trying to process an event that has already been canceled, examining the code of UnixEThread.cc line 232 shows that EThread::process_event gets called without a check for the event being cancelled.

      Brian

      Program received signal SIGSEGV, Segmentation fault.
      [Switching to Thread 0x7ffff64fa700 (LWP 28518)]
      0x00000000006fc663 in EThread::process_event (this=0x7ffff68ff010, e=0x1db45c0, calling_code=1) at UnixEThread.cc:130
      130  MUTEX_TRY_LOCK_FOR(lock, e->mutex.m_ptr, this, e->continuation);
      Missing separate debuginfos, use: debuginfo-install expat-2.0.1-9.1.el6.x86_64 glibc-2.12-1.25.el6_1.3.x86_64 keyutils-libs-1.4-1.el6.x86_64 krb5-libs-1.9-9.el6_1.1.x86_64 libcom_err-1.41.12-7.el6.x86_64 libgcc-4.4.5-6.el6.x86_64 libselinux-2.0.94-5.el6.x86_64 libstdc++-4.4.5-6.el6.x86_64 openssl-1.0.0-10.el6_1.4.x86_64 pcre-7.8-3.1.el6.x86_64 tcl-8.5.7-6.el6.x86_64 zlib-1.2.3-25.el6.x86_64
      (gdb) bt
      #0  0x00000000006fc663 in EThread::process_event (this=0x7ffff68ff010, e=0x1db45c0, calling_code=1) at UnixEThread.cc:130
      #1  0x00000000006fcbaf in EThread::execute (this=0x7ffff68ff010) at UnixEThread.cc:232
      #2  0x00000000006fb844 in spawn_thread_internal (a=0xfb7e80) at Thread.cc:88
      #3  0x00000036204077e1 in start_thread () from /lib64/libpthread.so.0
      #4  0x000000361f8e577d in clone () from /lib64/libc.so.6
      (gdb) bt full
      #0  0x00000000006fc663 in EThread::process_event (this=0x7ffff68ff010, e=0x1db45c0, calling_code=1) at UnixEThread.cc:130
              lock = {m = {m_ptr = 0x7ffff64f9d20}, lock_acquired = 202}
      #1  0x00000000006fcbaf in EThread::execute (this=0x7ffff68ff010) at UnixEThread.cc:232
              done_one = false
              e = 0x1db45c0
              NegativeQueue = {<DLL<Event, Event::Link_link>> = {head = 0xfc75f0}, tail = 0xfc75f0}
              next_time = 1314647904419648000
      #2  0x00000000006fb844 in spawn_thread_internal (a=0xfb7e80) at Thread.cc:88
              p = 0xfb7e80
      #3  0x00000036204077e1 in start_thread () from /lib64/libpthread.so.0
      No symbol table info available.
      #4  0x000000361f8e577d in clone () from /lib64/libc.so.6
      No symbol table info available.
      (gdb) f 0
      #0  0x00000000006fc663 in EThread::process_event (this=0x7ffff68ff010, e=0x1db45c0, calling_code=1) at UnixEThread.cc:130
      130  MUTEX_TRY_LOCK_FOR(lock, e->mutex.m_ptr, this, e->continuation);
      (gdb) p *e
      $2 = {<Action> = {_vptr.Action = 0x775170, continuation = 0x1f2fc08, mutex = {m_ptr = 0x7fffd40fba40}, cancelled = 1}, ethread = 0x7ffff68ff010, in_the_prot_queue = 0, in_the_priority_queue = 0, 
        immediate = 1, globally_allocated = 1, in_heap = 0, callback_event = 1, timeout_at = 0, period = 0, cookie = 0x0, link = {<SLink<Event>> = {next = 0x0}, prev = 0x0}}
      

      Attachments

        1. ts937.full.patch
          11 kB
          Brian Geffon
        2. UnixEThread.patch
          1 kB
          Brian Geffon

        Issue Links

          Activity

            People

              briang Brian Geffon
              briang Brian Geffon
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: