[ 
https://issues.apache.org/jira/browse/IMPALA-9572?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17072091#comment-17072091
 ] 

ASF subversion and git services commented on IMPALA-9572:
---------------------------------------------------------

Commit e8f604a2139be2ee3f011e6f2ce71fa0dde26492 in impala's branch 
refs/heads/master from Csaba Ringhofer
[ https://gitbox.apache.org/repos/asf?p=impala.git;h=e8f604a ]

IMPALA-9572: Fix DCHECK in nested Parquet scanning

The issue occurred when there were skipped pages and a column
inside a collection was scanned, but its position was not needed.
The repetition level still needs to be read in this case, as the
skipped ranges are set in top level rows, so collection items
need to know which top level row do they belong to.

A DCHECK in StrideWriter's constructor was hit, otherwise the
code ran correctly in release mode. The DCHECK is moved to
functions where the condition would actually cause problems.

Testing:
- added and ran a regression test

Change-Id: I5e8ef514ead71f732c73f910af7fd1aecd37bb81
Reviewed-on: http://gerrit.cloudera.org:8080/15598
Reviewed-by: Impala Public Jenkins <[email protected]>
Tested-by: Impala Public Jenkins <[email protected]>


> Impalad crash when process decimal value
> ----------------------------------------
>
>                 Key: IMPALA-9572
>                 URL: https://issues.apache.org/jira/browse/IMPALA-9572
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Backend
>    Affects Versions: Impala 4.0
>            Reporter: Yongzhi Chen
>            Assignee: Csaba Ringhofer
>            Priority: Blocker
>              Labels: broken-build, crash
>         Attachments: 
> impalad.impala-ec2-centos74-m5-4xlarge-ondemand-1a73.vpc.cloudera.com.jenkins.log.ERROR.20200328-031659.18222.gz
>
>
> In impala-asf-master-exhaustive build, minidump shows impalad crashed:
> Crash reason:  SIGABRT
> Crash address: 0x7d10000472e
> Process uptime: not available
> Thread 396 (crashed)
>  0  libc-2.17.so + 0x351f7
>     rax = 0x0000000000000000   rdx = 0x0000000000000006
>     rcx = 0xffffffffffffffff   rbx = 0x0000000007246600
>     rsi = 0x0000000000004273   rdi = 0x000000000000472e
>     rbp = 0x00007f6e43ee7050   rsp = 0x00007f6e43ee6ce8
>      r8 = 0x0000000000000000    r9 = 0x00007f6e43ee6b60
>     r10 = 0x0000000000000008   r11 = 0x0000000000000206
>     r12 = 0x0000000007246680   r13 = 0x0000000000000044
>     r14 = 0x000000000724dfc4   r15 = 0x0000000007246600
>     rip = 0x00007f6f2b1da1f7
>     Found by: given as instruction pointer in context
>  1  libc-2.17.so + 0x368e8
>     rbp = 0x00007f6e43ee7050   rsp = 0x00007f6e43ee6cf0
>     rip = 0x00007f6f2b1db8e8
>     Found by: stack scanning
>  2  impalad!google_breakpad::ExceptionHandler::HandleSignal(int, siginfo_t*, 
> void*) + 0x1e0
>     rbp = 0x00007f6e43ee7050   rsp = 0x00007f6e43ee6d78
>     rip = 0x0000000004ed0840
>     Found by: stack scanning
>  3  impalad!google::DumpStackTraceAndExit() + 0x24
>     rbp = 0x00007f6e43ee7050   rsp = 0x00007f6e43ee6e20
>     rip = 0x0000000004ea2554
>     Found by: stack scanning
>  4  impalad!google::LogMessage::Fail() + 0xd
>     rbx = 0x0000000007246600   rbp = 0x00007f6e43ee7050
>     rsp = 0x00007f6e43ee6ed0   rip = 0x0000000004e98fad
>     Found by: call frame info
>  5  impalad!google::LogMessage::SendToLog() + 0x2b2
>     rbx = 0x0000000007246600   rbp = 0x00007f6e43ee7050
>     rsp = 0x00007f6e43ee6ee0   rip = 0x0000000004e9a852
>     Found by: call frame info
>  6  impalad!google::LogMessage::Flush() + 0x157
>     rbx = 0x00007f6e43ee7090   rbp = 0x00007f6f2bd8a6a0
>     rsp = 0x00007f6e43ee7060   r12 = 0x00007f6e43ee707f
>     r13 = 0x00000000072554f8   r14 = 0x00007f6e43ee7120
>     r15 = 0x0000000018954c50   rip = 0x0000000004e98987
>     Found by: call frame info
>  7  impalad!google::LogMessageFatal::~LogMessageFatal() + 0xe
>     rbx = 0x00007f6e43ee7120   rbp = 0x00007f6e43ee7160
>     rsp = 0x00007f6e43ee70e0   r12 = 0x0000000000000001
>     r13 = 0x00000000072554f8   r14 = 0x0000000118ba0000
>     r15 = 0x0000000018954c50   rip = 0x0000000004e9bf4e
>     Found by: call frame info
>  8  impalad!impala::StrideWriter<long>::StrideWriter(long*, long) [mem-util.h 
> : 40 + 0xd]
>     rbx = 0x0000000000000001   rbp = 0x00007f6e43ee7160
>     rsp = 0x00007f6e43ee7100   r12 = 0x0000000000000001
>     r13 = 0x00000000072554f8   r14 = 0x0000000118ba0000
>     r15 = 0x0000000018954c50   rip = 0x0000000002c07535
>     Found by: call frame info
>  9  
> impalad!impala::BaseScalarColumnReader::FillPositionsInCandidateRange(int, 
> int, unsigned char*, int) [parquet-column-readers.cc : 1319 + 0x1f]
>     rbx = 0x00000000000017d4   rbp = 0x00007f6e43ee7270
>     rsp = 0x00007f6e43ee7170   r12 = 0x0000000000000000
>     r13 = 0x0000000000000039   r14 = 0x0000000118ba0000
>     r15 = 0x0000000018954c50   rip = 0x0000000002c008d3
>     Found by: call frame info
> 10  impalad!impala::ScalarColumnReader<impala::DecimalValue<long>, 
> (parquet::Type::type)7, true>::MaterializeValueBatchRepeatedDefLevel(int, 
> int, unsigned char*, int*) [parquet-column-readers.cc : 612 + 0x2b]
>     rbx = 0x0000000000000007   rbp = 0x00007f6e43ee73a0
>     rsp = 0x00007f6e43ee7280   r12 = 0x0000000000000000
>     r13 = 0x0000000000000039   r14 = 0x0000000118ba0000
>     r15 = 0x0000000018954c50   rip = 0x0000000002c731f7
>     Found by: call frame info
> 11  impalad!bool impala::ScalarColumnReader<impala::DecimalValue<long>, 
> (parquet::Type::type)7, true>::ReadValueBatch<true>(int, int, unsigned char*, 
> int*) [parquet-column-readers.cc : 468 + 0x26]
>     rbx = 0x0000000000000000   rbp = 0x00007f6e43ee7520
>     rsp = 0x00007f6e43ee73b0   r12 = 0x0000000000000400
>     r13 = 0x0000000000000039   r14 = 0x0000000118ba0000
>     r15 = 0x0000000018954c50   rip = 0x0000000002c54db1
>     Found by: call frame info
> 12  impalad!impala::ScalarColumnReader<impala::DecimalValue<long>, 
> (parquet::Type::type)7, true>::ReadValueBatch(impala::MemPool*, int, int, 
> unsigned char*, int*) [parquet-column-readers.cc : 77 + 0x1d]
>     rbx = 0x0000000002c1cdac   rbp = 0x00007f6e43ee7560
>     rsp = 0x00007f6e43ee7530   r12 = 0x0000000000000400
>     r13 = 0x0000000000000039   r14 = 0x0000000118ba0000
>     r15 = 0x0000000018954c50   rip = 0x0000000002c1cde7
>     Found by: call frame info
> 13  
> impalad!impala::HdfsParquetScanner::AssembleRows(std::vector<impala::ParquetColumnReader*,
>  std::allocator<impala::ParquetColumnReader*> > const&, impala::RowBatch*, 
> bool*) [hdfs-parquet-scanner.cc : 1111 + 0x19]
>     rbx = 0x0000000002c1cdac   rbp = 0x00007f6e43ee7880
>     rsp = 0x00007f6e43ee7570   r12 = 0x0000000000000400
>     r13 = 0x0000000000000039   r14 = 0x0000000118ba0000
>     r15 = 0x0000000018954c50   rip = 0x0000000002bb4145
>     Found by: call frame info
> 14  impalad!impala::HdfsParquetScanner::GetNextInternal(impala::RowBatch*) 
> [hdfs-parquet-scanner.cc : 454 + 0x42]
>     rbx = 0x00007f6e43ee8080   rbp = 0x00007f6e43ee7f30
>     rsp = 0x00007f6e43ee7890   r12 = 0x0000000000000000
>     r13 = 0x0000000000000000   r14 = 0x00000000a6971fc8
>     r15 = 0x000000000000002c   rip = 0x0000000002baefe5
>     Found by: call frame info
> 15  impalad!impala::HdfsParquetScanner::ProcessSplit() 
> [hdfs-parquet-scanner.cc : 351 + 0x39]
>     rbx = 0x0000000002bad198   rbp = 0x00007f6e43ee8000
> There are several test failures after that with same error:
> Query aborted:Failed due to unreachable impalad(s): 
> impala-ec2-centos74-m5-4xlarge-ondemand-1a73.vpc.cloudera.com:22001
> The first related test may be:
> query_test.test_spilling.TestSpillingDebugActionDimensions.test_spilling



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to