Uploaded image for project: 'MariaDB ColumnStore'
  1. MariaDB ColumnStore
  2. MCOL-5636

FairThreadScheduler::sendErrorMsg and BPPSeeder::sendErrorMsg crash PP trying to send to a nullptr sock

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Major
    • Resolution: Fixed
    • 23.02.4, 23.10.0
    • 23.10.1, 23.02.7
    • PrimProc
    • None
    • 2023-12

    Description

      There is a crash that is caused by FairThreadScheduler trying to send an error over an empty socket. This might happen if the Job that causes an exception in FairThreadScheduler has been received via same node communication messaging queue.

      crash trace

      Date/time: 2024-01-04 14:11:47
      Signal: 6
       
      /usr/bin/PrimProc(+0xb74b6)[0x5613d1fb04b6]
      /lib64/libpthread.so.0(+0x12cf0)[0x7fc87b116cf0]
      /lib64/libc.so.6(gsignal+0x10f)[0x7fc879b31aff]
      /lib64/libc.so.6(abort+0x127)[0x7fc879b04ea5]
      /lib64/libc.so.6(+0x21d79)[0x7fc879b04d79]
      /lib64/libc.so.6(+0x47456)[0x7fc879b2a456]
      /lib64/libthreadpool.so(_ZN10threadpool14FairThreadPool12sendErrorMsgEjjN5boost10shared_ptrIN11messageqcpp8IOSocketEEE+0x1ab)[0x7fc87aeb6b7b]
      /lib64/libthreadpool.so(+0x18a6e)[0x7fc87ae9da6e]
      /usr/bin/PrimProc(+0xb8f97)[0x5613d1fb1f97]
      /lib64/libpthread.so.0(+0x81ca)[0x7fc87b10c1ca]
      /lib64/libc.so.6(clone+0x43)[0x7fc879b1ce73]
      

      crash trace analyzer results:

      Line decoded:
      /lib64/libthreadpool.so(_ZN10threadpool14FairThreadPool12sendErrorMsgEjjN5boost10shared_ptrIN11messageqcpp8IOSocketEEE+0x1ab)[0x7fc87aeb6b7b]
      File:
      /usr/src/debug/MariaDB-/src_0/storage/columnstore/columnstore/utils/threadpool/fair_threadpool.cpp:311
       
      result:
      void FairThreadPool::sendErrorMsg(uint32_t id, uint32_t step, primitiveprocessor::SP_UM_IOSOCK sock)
      {
        ISMPacketHeader ism;
        PrimitiveHeader ph = {0, 0, 0, 0, 0, 0};
       
        ism.Status = logging::primitiveServerErr;
        ph.UniqueID = id;
        ph.StepID = step;
        messageqcpp::ByteStream msg(sizeof(ISMPacketHeader) + sizeof(PrimitiveHeader)); <--- 311
        msg.append((uint8_t*)&ism, sizeof(ism));
        msg.append((uint8_t*)&ph, sizeof(ph));
       
        sock->write(msg);
      }
      

      Attachments

        Issue Links

          Activity

            People

              drrtuy Roman
              drrtuy Roman
              Denis Khalikov Denis Khalikov
              Votes:
              1 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.