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

        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.