-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Closed
Description
Search before asking
- I had searched in the issues and found no similar issues.
Version
master b2d1685 (2023-12-19).
What's Wrong?
I ran clang-tidy with several bugprone rules, some reported errors:
bugprone-use-after-move
These should cause undefined behavior.
/codebase/apache/doris/be/src/io/fs/s3_file_system.cpp:214:40: error: 'objects' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
VLOG_TRACE << "delete " << objects.size()
^
/codebase/apache/doris/be/src/io/fs/s3_file_system.cpp:201:17: note: move occurred here
del.WithObjects(std::move(objects)).SetQuiet(true);
^
/codebase/apache/doris/be/src/vec/columns/column_array.cpp:98:39: error: 'nested_column' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
if (!offsets_concrete->empty() && nested_column) {
^
/codebase/apache/doris/be/src/vec/columns/column_array.cpp:91:11: note: move occurred here
: data(std::move(nested_column)), offsets(std::move(offsets_column)) {
^
/codebase/apache/doris/be/src/vec/columns/column_map.cpp:56:39: error: 'keys' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
if (!offsets_concrete->empty() && keys && values) {
^
/codebase/apache/doris/be/src/vec/columns/column_map.cpp:47:11: note: move occurred here
: keys_column(std::move(keys)),
^
/codebase/apache/doris/be/src/vec/columns/column_map.cpp:56:47: error: 'values' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
if (!offsets_concrete->empty() && keys && values) {
^
/codebase/apache/doris/be/src/vec/columns/column_map.cpp:48:11: note: move occurred here
values_column(std::move(values)),
^
/codebase/apache/doris/be/src/agent/task_worker_pool.cpp:593:23: error: 'name' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
CHECK(st.ok()) << name << ": " << st;
^
/codebase/apache/doris/be/src/agent/task_worker_pool.cpp:562:11: note: move occurred here
: _name(std::move(name)) {
/codebase/apache/doris/be/src/io/fs/s3_file_system.cpp:117:13: error: 'id' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
id.c_str(), config::s3_transfer_executor_pool_size);
^
/codebase/apache/doris/be/src/io/fs/s3_file_system.cpp:104:11: note: move occurred here
: RemoteFileSystem(s3_conf.prefix, std::move(id), FileSystemType::S3),
^
/codebase/apache/doris/be/src/olap/merger.cpp:186:13: error: 'key_columns' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
key_columns.end() != std::find(key_columns.begin(), key_columns.end(), i)) {
^
/codebase/apache/doris/be/src/olap/merger.cpp:182:24: note: move occurred here
column_groups->emplace_back(std::move(key_columns));
^
/codebase/apache/doris/be/src/vec/common/sort/heap_sorter.cpp:91:23: error: 'tmp_block' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
size_t num_rows = tmp_block.rows();
^
/codebase/apache/doris/be/src/vec/common/sort/heap_sorter.cpp:86:29: note: move occurred here
HeapSortCursorBlockView block_view_val(std::move(tmp_block), _sort_description);
^These are false positives
/codebase/apache/doris/be/src/olap/rowset/segment_creator.cpp:209:5: error: 'block' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
block.swap(flush_block);
^
/codebase/apache/doris/be/src/olap/rowset/segment_creator.cpp:124:23: note: move occurred here
vectorized::Block flush_block(std::move(block));
^
/codebase/apache/doris/be/src/vec/exec/scan/scan_task_queue.cpp:41:53: error: 'scan_task' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
VLOG_DEBUG << "try_push_back scan task " << scan_task.scanner_context->ctx_id << " "
^
/codebase/apache/doris/be/src/vec/exec/scan/scan_task_queue.cpp:40:16: note: move occurred here
if (_queue.try_put(std::move(scan_task))) {
^
/codebase/apache/doris/be/src/vec/exec/scan/new_olap_scan_node.cpp:607:31: error: 'rs_splits' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
auto& split = rs_splits.emplace_back();
^
/codebase/apache/doris/be/src/vec/exec/scan/new_olap_scan_node.cpp:620:30: note: move occurred here
{std::move(rs_splits), read_source.delete_predicates}));
^
/codebase/apache/doris/be/src/vec/exec/scan/new_olap_scan_node.cpp:607:31: note: the use happens in a later loop iteration than the move
auto& split = rs_splits.emplace_back();
^
/codebase/apache/doris/be/src/vec/functions/function.cpp:74:18: error: 'result_null_map_column' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
if (!result_null_map_column) {
^
/codebase/apache/doris/be/src/vec/functions/function.cpp:79:29: note: move occurred here
std::move(result_null_map_column)->assume_mutable();
^
/codebase/apache/doris/be/src/vec/functions/function.cpp:74:18: note: the use happens in a later loop iteration than the move
if (!result_null_map_column) {
^
/codebase/apache/doris/be/src/vec/exec/format/orc/vorc_reader.cpp:1915:63: error: 'dict_value_column' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
{ColumnNullable::create(std::move(dict_value_column),
^
/codebase/apache/doris/be/src/vec/exec/format/orc/vorc_reader.cpp:1915:30: note: move occurred here
{ColumnNullable::create(std::move(dict_value_column),
^
/codebase/apache/doris/be/src/vec/exec/format/orc/vorc_reader.cpp:1915:63: note: the use happens in a later loop iteration than the move
{ColumnNullable::create(std::move(dict_value_column),
^
/codebase/apache/doris/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:803:63: error: 'dict_value_column' used after it was moved [bugprone-use-after-move,-warnings-as-errors]
{ColumnNullable::create(std::move(dict_value_column),
^
/codebase/apache/doris/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:803:30: note: move occurred here
{ColumnNullable::create(std::move(dict_value_column),
^
/codebase/apache/doris/be/src/vec/exec/format/parquet/vparquet_group_reader.cpp:803:63: note: the use happens in a later loop iteration than the move
{ColumnNullable::create(std::move(dict_value_column),
^
bugprone-bool-pointer-implicit-conversion
This looks used incorrectly.
/codebase/apache/doris/be/src/vec/exec/format/parquet/vparquet_column_reader.cpp:450:19: error: dubious check of 'bool *' against 'nullptr', did you mean to dereference it? [bugprone-bool-pointer-implicit-conversion,-warnings-as-errors]
if (loaded && has_dict) {
^What You Expected?
None of these error is reported.
How to Reproduce?
run clang-tidy with bugprone-bool-pointer-implicit-conversion and bugprone-use-after-move enabled.
.clang-tidy
Checks: |
-*,
bugprone-bool-pointer-implicit-conversion,
bugprone-use-after-move
Anything Else?
No response
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
Metadata
Metadata
Assignees
Labels
No labels