aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIgor Makunin <igor.makunin@gmail.com>2022-02-11 16:13:07 +0300
committerIgor Makunin <igor.makunin@gmail.com>2022-02-11 16:13:07 +0300
commitd275764f20f89058c60a16121079dce2a5466d23 (patch)
tree098cab7e3d7cd513f89ff80c503536fd77425804
parent58865f92201c1f91524c35ffdeb9689e363a10b0 (diff)
downloadydb-d275764f20f89058c60a16121079dce2a5466d23.tar.gz
KIKIMR-14306: fix use-after-free
ref:14f2a3f97379f396a19c1e7a475e480aedfefab4
-rw-r--r--ydb/core/tx/datashard/build_kqp_data_tx_out_rs_unit.cpp1
-rw-r--r--ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp1
2 files changed, 2 insertions, 0 deletions
diff --git a/ydb/core/tx/datashard/build_kqp_data_tx_out_rs_unit.cpp b/ydb/core/tx/datashard/build_kqp_data_tx_out_rs_unit.cpp
index 50a3c1f401..60311f907e 100644
--- a/ydb/core/tx/datashard/build_kqp_data_tx_out_rs_unit.cpp
+++ b/ydb/core/tx/datashard/build_kqp_data_tx_out_rs_unit.cpp
@@ -98,6 +98,7 @@ EExecutionStatus TBuildKqpDataTxOutRSUnit::Execute(TOperation::TPtr op, TTransac
auto result = KqpRunTransaction(ctx, op->GetTxId(), dataTx->GetKqpTasks(), tasksRunner);
if (result == NYql::NDq::ERunStatus::PendingInput && dataTx->GetKqpComputeCtx().IsTabletNotReady()) {
+ allocGuard.Release();
return OnTabletNotReady(*tx, *dataTx, txc, ctx);
}
}
diff --git a/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp b/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp
index 70e7be3662..946e035f82 100644
--- a/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp
+++ b/ydb/core/tx/datashard/execute_kqp_data_tx_unit.cpp
@@ -136,6 +136,7 @@ EExecutionStatus TExecuteKqpDataTxUnit::Execute(TOperation::TPtr op, TTransactio
op->HasKqpAttachedRSFlag() ? nullptr : &op->InReadSets(), dataTx->GetKqpTasks(), tasksRunner, computeCtx);
if (!result && computeCtx.IsTabletNotReady()) {
+ allocGuard.Release();
return OnTabletNotReady(*tx, *dataTx, txc, ctx);
}