Uploaded image for project: 'HPCC'
  1. HPCC
  2. HPCC-21791

Crash translating compound diskread/project if source record has fixed size nested datasets

    Details

    • Type: Regression
    • Status: Resolved
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 7.0.0
    • Fix Version/s: 7.0.28
    • Component/s: Code Generator
    • Labels:
      None

      Description

      The problem is hit when initializing the RtlRow during translation for the source file.
      In doing so it sets up offsets etc, but when doing so for the fixed size nested dataset, it reads a size from the row data, here:

      RtlDatasetTypeInfo::size() at rtlfield.cpp:3,247 0x7f8212fbe981	
      RtlRecord::calcRowOffsets() at rtlrecord.cpp:412 0x7f8212fc49c1	
      RtlRow::setRow() at rtlrecord.cpp:712 0x7f8212fc5b6d	
      RtlRow::RtlRow() at rtlrecord.cpp:636 0x7f8212fc5624	
      GeneralRecordTranslator::doTranslate() at rtldynfield.cpp:1,101 0x7f8212f9059e	
      GeneralRecordTranslator::translate() at rtldynfield.cpp:1,045 0x7f8212f90130	
      CRowStreamReader::nextRow() at thorcommon.cpp:1,197 0x7f8213cb0e8a	
      CDiskRecordPartHandler::nextRow() at thdiskreadslave.cpp:178 0x7f8214b11883	
      CDiskReadSlaveActivity::CDiskPartHandler::nextRow() at thdiskreadslave.cpp:472 0x7f8214b11e07	
      

      An example of the fixed size nested set is something like:

      r0 := record
       string5 s;
      end;
      
      r := record
        r0 ss[12345];
      end;
      

      Ultimately this causes serialization problems, or failure to allocate in roxiemem etc.

        Attachments

          Activity

            People

            • Assignee:
              ghalliday Gavin Halliday
              Reporter:
              jakesmith Jake Smith
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: