apache / doris

Apache Doris is an easy-to-use, high performance and unified analytics database.
https://doris.apache.org
Apache License 2.0
11.85k stars 3.12k forks source link

[Bug] be crash #13702

Open guomm opened 1 year ago

guomm commented 1 year ago

Search before asking

Version

1.1.3

What's Wrong?

SIGSEGV address not mapped to object (@0x9) received by PID 20571 (TID 0x7f1ba73d4700) from PID 9; stack trace: 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t, void) at /mnt/disk2/ygl/code/github/apache-doris/be/src/common/signal_handler.h:420 1# 0x00007F1BBE192400 in /lib64/libc.so.6 2# doris::vectorized::ColumnDictionary::convert_to_predicate_column_if_dictionary() at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/columns/column_dictionary.h:272 3# doris::vectorized::ColumnNullable::convert_to_predicate_column_if_dictionary() at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/columns/column_nullable.h:273 4# doris::segment_v2::BinaryDictPageDecoder::next_batch(unsigned long, COW::mutable_ptr&) at /mnt/disk2/ygl/code/github/apache-doris/be/src/olap/rowset/segment_v2/binary_dict_page.cpp:237 5# doris::segment_v2::FileColumnIterator::next_batch(unsigned long, COW::mutable_ptr&, bool) at /mnt/disk2/ygl/code/github/apache-doris/be/src/olap/rowset/segment_v2/column_reader.cpp:629 6# doris::segment_v2::SegmentIterator::_read_columns_by_index(unsigned int, unsigned int&, bool) at /mnt/disk2/ygl/code/github/apache-doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:808 7# doris::segment_v2::SegmentIterator::next_batch(doris::vectorized::Block) at /mnt/disk2/ygl/code/github/apache-doris/be/src/olap/rowset/segment_v2/segment_iterator.cpp:955 8# doris::vectorized::VUnionIterator::next_batch(doris::vectorized::Block) at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/olap/vgeneric_iterators.cpp:443 9# doris::BetaRowsetReader::next_block(doris::vectorized::Block) at /mnt/disk2/ygl/code/github/apache-doris/be/src/olap/rowset/beta_rowset_reader.cpp:204 10# doris::vectorized::VCollectIterator::Level0Iterator::next(doris::vectorized::Block) at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/olap/vcollect_iterator.cpp:235 11# doris::vectorized::VCollectIterator::Level1Iterator::next(doris::vectorized::Block) at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/olap/vcollect_iterator.cpp:294 12# doris::vectorized::BlockReader::_direct_next_block(doris::vectorized::Block, doris::MemPool, doris::ObjectPool, bool) at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/olap/block_reader.cpp:177 13# doris::vectorized::VOlapScanner::get_block(doris::RuntimeState, doris::vectorized::Block, bool) at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/exec/volap_scanner.cpp:53 14# doris::vectorized::VOlapScanNode::scanner_thread(doris::vectorized::VOlapScanner) at /mnt/disk2/ygl/code/github/apache-doris/be/src/vec/exec/volap_scan_node.cpp:227 15# doris::PriorityWorkStealingThreadPool::work_thread(int) at /mnt/disk2/ygl/code/github/apache-doris/be/src/util/priority_work_stealing_thread_pool.hpp:135 16# execute_native_thread_routine in /opt/doris/be/lib/doris_be 17# start_thread in /lib64/libpthread.so.0 18# clone in /lib64/libc.so.6

What You Expected?

1

How to Reproduce?

varchar类型的排序字段,有null数据时,按照条件过滤触发BUG。 比如说receiving_scan_time是排序字段,varchar类型,按照条件receiving_scan_time > '2022-10-26' 过滤时be会crash

Anything Else?

1

Are you willing to submit PR?

Code of Conduct

zy-kkk commented 1 year ago

I briefly reproduced your scene, but there was no be crash. Could you please describe your usage in detail, such as providing scheme and query

guomm commented 1 year ago

same sql,sometimes success,sometimes crash。

table: CREATE TABLE dwd_xx_order_df_test ( shop_id bigint(20) NULL COMMENT "id", receiving_scan_time varchar(32) NULL COMMENT "时间", order_no varchar(32) NULL COMMENT "x", order_details_id varchar(32) NULL COMMENT "x", is_anti_spam int(11) NULL COMMENT "x", item_id bigint(20) NULL COMMENT "x", status int(11) NULL COMMENT "x", receiving_scan_flag int(11) NULL COMMENT "x", user_id bigint(20) NULL COMMENT "x", mobile varchar(255) NULL COMMENT "x", address text NULL COMMENT "x", vid text NULL COMMENT "x", vcid bigint(20) NULL COMMENT "x", tcid bigint(20) NULL COMMENT "x", item_num bigint(20) NULL COMMENT "x", purchase_price double NULL COMMENT "x", total_amount double NULL COMMENT "x", tid bigint(20) NULL COMMENT "x", is_lack int(11) NULL COMMENT "x", city_market_id bigint(20) NULL COMMENT "x", is_same_city int(11) NULL COMMENT "x", product_label_status int(11) NULL COMMENT "x", qc_status int(11) NULL COMMENT "x", create_time varchar(32) NULL COMMENT "x", pay_time varchar(32) NULL COMMENT "x", dt varchar(32) NULL COMMENT "x" ) ENGINE=OLAP DUPLICATE KEY(shop_id, receiving_scan_time) COMMENT "OLAP" DISTRIBUTED BY HASH(shop_id) BUCKETS 5 PROPERTIES ( "replication_allocation" = "tag.location.default: 1", "in_memory" = "false", "storage_format" = "V2" );

query sql:

select shop_id, receiving_scan_time, order_no, order_details_id, case when product_label_status = 9 then '是' else '否' end as is_cancel, case when is_anti_spam = 0 then '非作弊' when is_anti_spam = 1 then '作弊1' when is_anti_spam = 2 then '作弊2' when is_anti_spam = 3 then '作弊3' end as is_anti_spam, item_id, case when status = 0 then 'off' when status = 1 then 'on' end as status, receiving_scan_flag, user_id, mobile, address, vid, vcid, tcid, item_num, purchase_price, total_amount, tid, is_lack, city_market_id, is_same_city, product_label_status, qc_status, create_time, pay_time, dt from dwd_old_order_df_test where receiving_scan_time >= '2022-10-01';

I briefly reproduced your scene, but there was no be crash. Could you please describe your usage in detail, such as providing scheme and query

guomm commented 1 year ago

when i change field “receiving_scan_time“ from varchar to date,and set default value. so far not crash