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

GROUP_CONCAT execution doesn't count RAM used to store data properly crashing PrimProc runtime

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Blocker
    • Resolution: Fixed
    • 22.08.7
    • 23.02.3
    • PrimProc
    • None
    • 10.0.20

    Description

      There is a case reported by a customer. 3 queries with GROUP_CONCAT on top were going to produce a relatively long strings. This causes some memory allocation related log messages and eventually causes SEGV signal in PP. Here are the log messages:

      Jan  5 16:02:04 vm-uks-edf-maria-slave threadpool[1724863]: 04.186263 |0|0|0| E 22 CAL0005: ThreadPool: Caught exception during execution:  boost::thread_resource_error: Resource temporarily unavailable [generic:11]
      

      Jan  5 16:02:04 vm-uks-edf-maria-slave joblist[1724863]: 04.185910 |701574|0|0| C 05 CAL0000: TupleAggregateStep::doThreadedAggregate() caught std::bad_alloc         %%10%%
      

      Here is the crash trace itself:

      Date/time: 2023-01-05 16:02:04
      Signal: 11
      /usr/bin/PrimProc(+0xc012a)[0x55f6d483812a]
      /lib/x86_64-linux-gnu/libpthread.so.0(+0x14420)[0x7f66c51bd420]
      /usr/lib/x86_64-linux-gnu/libjoblist.so(_ZN7joblist8TupleBPS23processByteStreamVectorERSt6vectorIN5boost10shared_ptrIN11messageqcpp10ByteStreamEEESaIS6_EEjjRS1_INS_7_CPInfoESaISA_EEPNS_4FIFOIN8rowgroup6RGDataEEEj+0xe9)[0x7f66c6347769]
      /usr/lib/x86_64-linux-gnu/libjoblist.so(_ZN5boost6detail8function26void_function_obj_invoker0IN7joblist19ByteStreamProcessorEvE6invokeERNS1_15function_bufferE+0x3e)[0x7f66c635543e]
      /usr/lib/x86_64-linux-gnu/libthreadpool.so(_ZN10threadpool10ThreadPool11beginThreadEv+0x5df)[0x7f66c513c1cf]
      /usr/bin/PrimProc(+0xc142b)[0x55f6d483942b]
      /lib/x86_64-linux-gnu/libpthread.so.0(+0x8609)[0x7f66c51b1609]
      /lib/x86_64-linux-gnu/libc.so.6(clone+0x43)[0x7f66c4c9c133]
      

      Internally GROUP_CONCAT(GroupConcatNoOrder::getResult()) code allocates a buffer on heap and doesn't account the RAM allocated b/c code threats the buffer as a temporary one.

      Attachments

        Issue Links

          Activity

            People

              tntnatbry Gagan Goel (Inactive)
              drrtuy Roman
              Roman Roman
              Daniel Lee Daniel Lee (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              7 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.