Uploaded image for project: 'IMPALA'
  1. IMPALA
  2. IMPALA-8206

Codegen crash on analytic functions in specific environments

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • Impala 2.7.0, Impala 2.8.0, Impala 2.9.0
    • Impala 2.10.0
    • Backend
    • ghx-label-3

    Description

      The following sequence crashes in certain Impala versions on certain environments:

      create table test (c1 int, c2 decimal(2,2));
      insert into test values (1,0.0);
      SELECT ROW_NUMBER() OVER (PARTITION BY a ORDER BY c1) b
      FROM (SELECT c1, (case when c2 = 1 then 1 else 0 end) as a FROM test) t;
      

      Any analytic function will do.

      FATAL log:

      F0212 06:58:45.937505  3119 llvm-codegen.cc:106] LLVM hit fatal error: Cannot select: 0x8e23130: i32 = X86ISD::CMP 0x61ff390, 0x61ffd10
        0x61ff390: i1,ch = CopyFromReg 0x5c21830, Register:i1 %vreg72
          0x8e23980: i1 = Register %vreg72
        0x61ffd10: i1 = or 0x8e234c0, 0x87e0be0
          0x8e234c0: i1,ch = CopyFromReg 0x5c21830, Register:i1 %vreg133
            0x8e23ab0: i1 = Register %vreg133
          0x87e0be0: i1,ch = CopyFromReg 0x5c21830, Register:i1 %vreg134
            0x87b0720: i1 = Register %vreg134
      In function: Compare
      

      Minidump:

       0  libc-2.12.so + 0x325e5
       1  libc-2.12.so + 0x33dc5
       2  libc-2.12.so + 0x6b58
       3  impalad!llvm::MCJIT::emitObject(llvm::Module*) + 0x119
       4  0x7f98ab6a74c0
       5  impalad!llvm::SelectionDAGISel::DoInstructionSelection() + 0x254
       6  impalad!llvm::SelectionDAGISel::CodeGenAndEmitDAG() + 0x1d2
       7  impalad!llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) + 0x36a
       8  impalad!llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 0x48f
       9  impalad!(anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) + 0x14
      10  impalad!llvm::FPPassManager::runOnFunction(llvm::Function&) + 0x27a
      11  impalad!llvm::legacy::PassManagerImpl::run(llvm::Module&) + 0x263
      12  impalad!llvm::MCJIT::emitObject(llvm::Module*) + 0x119
      13  impalad!llvm::MCJIT::generateCodeForModule(llvm::Module*) + 0x301
      14  impalad!llvm::MCJIT::finalizeObject() + 0x110
      15  impalad!impala::LlvmCodeGen::FinalizeModule() [llvm-codegen.cc : 937 + 0x2]
      16  impalad!impala::PlanFragmentExecutor::OptimizeLlvmModule() [plan-fragment-executor.cc : 300 + 0xd]
      17  impalad!impala::PlanFragmentExecutor::Open() [plan-fragment-executor.cc : 342 + 0x8]
      18  impalad!impala::FragmentMgr::FragmentExecState::Exec() [fragment-exec-state.cc : 58 + 0xb]
      19  impalad!impala::FragmentMgr::FragmentThread(impala::TUniqueId) [fragment-mgr.cc : 90 + 0xa]
      

      Didn't test versions earlier than 2.7.
      We've used RHEL6.7. For the two environments where we managed to repro, lscpu gives:

      Architecture:          x86_64
      CPU op-mode(s):        32-bit, 64-bit
      Byte Order:            Little Endian
      CPU(s):                6
      On-line CPU(s) list:   0-5
      Thread(s) per core:    1
      Core(s) per socket:    1
      Socket(s):             6
      NUMA node(s):          1
      Vendor ID:             GenuineIntel
      CPU family:            6
      Model:                 61
      Stepping:              2
      CPU MHz:               2197.454
      BogoMIPS:              4394.90
      Hypervisor vendor:     KVM
      Virtualization type:   full
      L1d cache:             32K
      L1i cache:             32K
      L2 cache:              4096K
      NUMA node0 CPU(s):     0-5
      

      and

      Architecture:          x86_64
      CPU op-mode(s):        32-bit, 64-bit
      Byte Order:            Little Endian
      CPU(s):                40
      On-line CPU(s) list:   0-39
      Thread(s) per core:    2
      Core(s) per socket:    10
      Socket(s):             2
      NUMA node(s):          2
      Vendor ID:             GenuineIntel
      CPU family:            6
      Model:                 85
      Model name:            Intel(R) Xeon(R) Gold 5115 CPU @ 2.40GHz
      Stepping:              4
      CPU MHz:               2394.367
      BogoMIPS:              4786.29
      Virtualization:        VT-x
      L1d cache:             32K
      L1i cache:             32K
      L2 cache:              1024K
      L3 cache:              14080K
      NUMA node0 CPU(s):     0-9,20-29
      NUMA node1 CPU(s):     10-19,30-39
      

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jeszyb Balazs Jeszenszky
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: