You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues-all@impala.apache.org by "Gabor Kaszab (Jira)" <ji...@apache.org> on 2021/04/30 11:57:00 UTC

[jira] [Created] (IMPALA-10691) Impala crashes sporadically when multiple CAST(FORMAT)

Gabor Kaszab created IMPALA-10691:
-------------------------------------

             Summary: Impala crashes sporadically when multiple CAST(FORMAT)
                 Key: IMPALA-10691
                 URL: https://issues.apache.org/jira/browse/IMPALA-10691
             Project: IMPALA
          Issue Type: Bug
          Components: Backend
    Affects Versions: Impala 3.4.0
            Reporter: Gabor Kaszab


One way to repro. This crashes Impala after a few runs.
{code:java}
use functional;
set max_scan_range_length=16384;
set mt_dop=2;
select count(*) from alltypes a1, alltypes a2 where cast(cast(a1.date_string_col as date format 'MM/dd/yy') as string format 'MM/dd/yy') = cast(cast(a2.date_string_col as date format 'MM/dd/yy') as string format 'MM/dd/yy');
{code}

The trace can be different but this is one frequently coming up:
{code:java}
F0430 12:32:43.029990  6427 datetime-iso-sql-format-tokenizer.cc:138] 614cc7aa439af2d5:96e9c4c200000002] Check failed: str_begin <= *current_pos && *current_pos < str_end
*** Check failure stack trace: ***
    @          0x548af0c  google::LogMessage::Fail()
    @          0x548c7fc  google::LogMessage::SendToLog()
    @          0x548a86a  google::LogMessage::Flush()
    @          0x548e468  google::LogMessageFatal::~LogMessageFatal()
    @          0x24d619c  impala::datetime_parse_util::IsoSqlFormatTokenizer::ProcessNextToken()
    @          0x24d5d9e  impala::datetime_parse_util::IsoSqlFormatTokenizer::Tokenize()
    @          0x2cce85c  impala::CastFormatExpr::OpenEvaluator()
    @          0x2c4e43f  impala::ScalarExpr::OpenEvaluator()
    @          0x2c93690  impala::ScalarFnCall::OpenEvaluator()
    @          0x2cce5b9  impala::CastFormatExpr::OpenEvaluator()
    @          0x2c55959  impala::ScalarExprEvaluator::Open()
    @          0x2c559e8  impala::ScalarExprEvaluator::Open()
    @          0x2b9acb8  impala::HashTableCtx::Open()
    @          0x2ad8725  impala::PartitionedHashJoinNode::Open()
    @          0x2bc1c86  impala::AggregationNode::Open()
    @          0x24a61df  impala::FragmentInstanceState::Open()
    @          0x24a27ea  impala::FragmentInstanceState::Exec()
    @          0x23e65af  impala::QueryState::ExecFInstance()
{code}

Another possible trace is:
{code:java}
#7  0x000000000239d0a1 in impala::DateParser::Format[abi:cxx11](impala::datetime_parse_util::DateTimeFormatContext const&, impala::DateValue const&) (dt_ctx=..., date=...)
    at /home/boroknagyz/Impala/be/src/runtime/date-parse-util.cc:135
#8  0x000000000227a5d7 in impala::DateValue::Format[abi:cxx11](impala::datetime_parse_util::DateTimeFormatContext const&) const (this=0x7f21674d268c, dt_ctx=...)
    at /home/boroknagyz/Impala/be/src/runtime/date-value.cc:152
#9  0x0000000002cccdd2 in impala::CastFunctions::CastToStringVal (ctx=0x93bcee8, val=...) at /home/boroknagyz/Impala/be/src/exprs/cast-functions-ir.cc:219
#10 0x0000000002cab261 in impala::ScalarFnCall::InterpretEval<impala_udf::StringVal> (this=0xcf29c00, eval=0xaa8a1a0, row=0xd08a000) at /home/boroknagyz/Impala/be/src/exprs/scalar-fn-call.cc:490
#11 0x0000000002c90a7d in impala::ScalarFnCall::GetStringValInterpreted (this=0xcf29c00, eval=0xaa8a1a0, row=0xd08a000) at /home/boroknagyz/Impala/be/src/exprs/scalar-fn-call.cc:556
#12 0x0000000002c5c330 in impala::ScalarExpr::GetStringVal (this=0xcf29c00, eval=0xaa8a1a0, row=0xd08a000) at /home/boroknagyz/Impala/be/src/exprs/scalar-expr.inline.h:62
#13 0x0000000002c595a7 in impala::ScalarExprEvaluator::GetValue (this=0xaa8a1a0, expr=..., row=0xd08a000) at /home/boroknagyz/Impala/be/src/exprs/scalar-expr-evaluator.cc:304
#14 0x0000000002c59281 in impala::ScalarExprEvaluator::GetValue (this=0xaa8a1a0, row=0xd08a000) at /home/boroknagyz/Impala/be/src/exprs/scalar-expr-evaluator.cc:255
#15 0x00000000023d9798 in impala::KrpcDataStreamSender::HashRow (this=0x1363f200, row=0xd08a000) at /home/boroknagyz/Impala/be/src/runtime/krpc-data-stream-sender.cc:977
#16 0x00000000023e3cfc in impala::KrpcDataStreamSender::HashAndAddRows (this=0x1363f200, batch=0xaa8a0d0) at /home/boroknagyz/Impala/be/src/runtime/krpc-data-stream-sender-ir.cc:38
{code}


There is another scenario that gives an error incorrectly:
{code:java}
[localhost:21050] functional> select count(*) from alltypes a1, alltypes a2 where cast(cast(a1.date_string_col as date format 'MM/dd/yy') as string format 'yyyyMMdd') = cast(cast(a2.date_string_col as date format 'MM/dd/yy') as string format 'yyyyMMdd');
...
ERROR: UDF ERROR: String to Date parse failed. Input '07/03/10' doesn't match with format 'yyyyMMdd'
{code}


A TSAN build shows data race pointing here:
https://github.com/apache/impala/blob/master/be/src/exprs/cast-format-expr.cc#L37

Possible root cause is that FRAGMENT_LOCAL is used instead of THREAD_LOCAL.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-all-unsubscribe@impala.apache.org
For additional commands, e-mail: issues-all-help@impala.apache.org