AetheWu opened a new issue, #61095: URL: https://github.com/apache/doris/issues/61095
### Search before asking - [x] I had searched in the [issues](https://github.com/apache/doris/issues?q=is%3Aissue) and found no similar issues. ### Version v4.0.2 ### What's Wrong? BE crashed, be.out : ``` start BE in local mode INFO: java_cmd /usr/lib/jvm/java-17-openjdk-amd64/bin/java INFO: jdk_version 17 INFO: java_cmd /usr/lib/jvm/java-17-openjdk-amd64/bin/java INFO: jdk_version 17 StdoutLogger 2026-02-28 13:43:53,606 Start time: Sat Feb 28 13:43:53 CST 2026 INFO: java_cmd /usr/lib/jvm/java-17-openjdk-amd64/bin/java INFO: jdk_version 17 OpenJDK 64-Bit Server VM warning: Option CriticalJNINatives was deprecated in version 16.0 and will likely be removed in a future release. SLF4J(W): Class path contains multiple SLF4J providers. SLF4J(W): Found provider [org.apache.logging.slf4j.SLF4JServiceProvider@64c64813] SLF4J(W): Found provider [org.slf4j.reload4j.Reload4jServiceProvider@3ecf72fd] SLF4J(W): See https://www.slf4j.org/codes.html#multiple_bindings for an explanation. SLF4J(I): Actual provider is of type [org.apache.logging.slf4j.SLF4JServiceProvider@64c64813] start BE in local mode terminate called after throwing an instance of 'std::out_of_range' what(): map::at *** Query id: 910040935a2c474a-866312329dc9d2ea *** *** is nereids: 1 *** *** tablet id: 0 *** *** Aborted at 1772761436 (unix time) try "date -d @1772761436" if you are using GNU date *** *** Current BE git commitID: 30d2df0459 *** *** SIGABRT unknown detail explain (@0x6a52) received by PID 27218 (TID 1311 OR 0x7fc0b13da700) from PID 27218; stack trace: *** 0# doris::signal::(anonymous namespace)::FailureSignalHandler(int, siginfo_t*, void*) at /home/zcp/repo_center/doris_release/doris/be/src/common/signal_handler.h:420 1# 0x00007FCAF74CA980 in /lib/x86_64-linux-gnu/libpthread.so.0 2# raise in /lib/x86_64-linux-gnu/libc.so.6 3# abort in /lib/x86_64-linux-gnu/libc.so.6 4# __gnu_cxx::__verbose_terminate_handler() [clone .cold] in /app/doris/apache-doris-4.0.2-bin-x64/be/lib/doris_be 5# __cxxabiv1::__terminate(void (*)()) in /app/doris/apache-doris-4.0.2-bin-x64/be/lib/doris_be 6# 0x000055D1DD974479 in /app/doris/apache-doris-4.0.2-bin-x64/be/lib/doris_be 7# __cxa_rethrow.cold in /app/doris/apache-doris-4.0.2-bin-x64/be/lib/doris_be 8# std::__throw_out_of_range(char const*) in /app/doris/apache-doris-4.0.2-bin-x64/be/lib/doris_be 9# 0x000055D1D816E1D4 in /app/doris/apache-doris-4.0.2-bin-x64/be/lib/doris_be 10# doris::vectorized::TableSchemaChangeHelper::StructNode::children_column_exists(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) const at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/format/table/table_format_reader.h:195 11# doris::vectorized::ParquetReader::init_reader(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<doris::ColumnValueRange<(doris::PrimitiveType)3>, doris::ColumnValueRange<(doris::PrimitiveType)4>, doris::ColumnValueRange<(doris::PrimitiveType)5>, doris::ColumnValueRange<(doris::PrimitiveType)6>, doris::ColumnValueRange<(doris::PrimitiveType)7>, doris::ColumnValueRange<(doris::PrimitiveType)8>, doris::ColumnValueRange<(doris::PrimitiveType)9>, doris::ColumnValueRange<(doris::PrimitiveType)36>, doris::ColumnValueRange<(doris::PrimitiveType)37>, doris::ColumnValueRange<(doris::PrimitiveType)15>, doris::ColumnValueRange<(doris::PrimitiveType)10>, doris::ColumnValueRange<(doris::PrimitiveType)23>, doris::ColumnValueRange<(do ris::PrimitiveType)11>, doris::ColumnValueRange<(doris::PrimitiveType)25>, doris::ColumnValueRange<(doris::PrimitiveType)12>, doris::ColumnValueRange<(doris::PrimitiveType)26>, doris::ColumnValueRange<(doris::PrimitiveType)20>, doris::ColumnValueRange<(doris::PrimitiveType)2>, doris::ColumnValueRange<(doris::PrimitiveType)19>, doris::ColumnValueRange<(doris::PrimitiveType)28>, doris::ColumnValueRange<(doris::PrimitiveType)29>, doris::ColumnValueRange<(doris::PrimitiveType)30>, doris::ColumnValueRange<(doris::PrimitiveType)35> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::variant<doris::ColumnValueRange<(doris::PrimitiveType)3>, doris::ColumnValueRange<(doris::PrimitiveType)4>, doris::ColumnValueRange<(doris::PrimitiveType)5 >, doris::ColumnValueRange<(doris::PrimitiveType)6>, >doris::ColumnValueRange<(doris::PrimitiveType)7>, >doris::ColumnValueRange<(doris::PrimitiveType)8>, >doris::ColumnValueRange<(doris::PrimitiveType)9>, >doris::ColumnValueRange<(doris::PrimitiveType)36>, >doris::ColumnValueRange<(doris::PrimitiveType)37>, >doris::ColumnValueRange<(doris::PrimitiveType)15>, >doris::ColumnValueRange<(doris::PrimitiveType)10>, >doris::ColumnValueRange<(doris::PrimitiveType)23>, >doris::ColumnValueRange<(doris::PrimitiveType)11>, >doris::ColumnValueRange<(doris::PrimitiveType)25>, >doris::ColumnValueRange<(doris::PrimitiveType)12>, >doris::ColumnValueRange<(doris::PrimitiveType)26>, >doris::ColumnValueRange<(doris::PrimitiveType)20>, >doris::ColumnValueRange<(doris::PrimitiveType)2>, >doris::ColumnValueRange<(doris::PrimitiveType)19>, >doris::ColumnValueRange<(doris::PrimitiveType)28>, >doris::ColumnValueRange<(doris::PrimitiveType)29>, >doris::ColumnValueRange<(doris::PrimitiveType)30>, >doris::ColumnValueRange<(doris ::PrimitiveType)35> > > > > const*, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > > const&, doris::TupleDescriptor const*, doris::RowDescriptor const*, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > const*, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > > const*, std::unordered_map<int, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > >, std::hash<int>, std::equal_to<int>, std::alloc ator<std::pair<int const, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > > > > > const*, std::shared_ptr<doris::vectorized::TableSchemaChangeHelper::Node>, bool) at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/format/parquet/vparquet_reader.cpp:350 12# doris::vectorized::IcebergParquetReader::init_reader(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::variant<doris::ColumnValueRange<(doris::PrimitiveType)3>, doris::ColumnValueRange<(doris::PrimitiveType)4>, doris::ColumnValueRange<(doris::PrimitiveType)5>, doris::ColumnValueRange<(doris::PrimitiveType)6>, doris::ColumnValueRange<(doris::PrimitiveType)7>, doris::ColumnValueRange<(doris::PrimitiveType)8>, doris::ColumnValueRange<(doris::PrimitiveType)9>, doris::ColumnValueRange<(doris::PrimitiveType)36>, doris::ColumnValueRange<(doris::PrimitiveType)37>, doris::ColumnValueRange<(doris::PrimitiveType)15>, doris::ColumnValueRange<(doris::PrimitiveType)10>, doris::ColumnValueRange<(doris::PrimitiveType)23>, doris::ColumnValueRa nge<(doris::PrimitiveType)11>, doris::ColumnValueRange<(doris::PrimitiveType)25>, doris::ColumnValueRange<(doris::PrimitiveType)12>, doris::ColumnValueRange<(doris::PrimitiveType)26>, doris::ColumnValueRange<(doris::PrimitiveType)20>, doris::ColumnValueRange<(doris::PrimitiveType)2>, doris::ColumnValueRange<(doris::PrimitiveType)19>, doris::ColumnValueRange<(doris::PrimitiveType)28>, doris::ColumnValueRange<(doris::PrimitiveType)29>, doris::ColumnValueRange<(doris::PrimitiveType)30>, doris::ColumnValueRange<(doris::PrimitiveType)35> >, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::variant<doris::ColumnValueRange<(doris::PrimitiveType)3>, doris::ColumnValueRange<(doris::PrimitiveType)4>, doris::ColumnValueRange<(doris::Primitiv eType)5>, doris::ColumnValueRange<(doris::PrimitiveType)6>, doris::ColumnValueRange<(doris::PrimitiveType)7>, doris::ColumnValueRange<(doris::PrimitiveType)8>, doris::ColumnValueRange<(doris::PrimitiveType)9>, doris::ColumnValueRange<(doris::PrimitiveType)36>, doris::ColumnValueRange<(doris::PrimitiveType)37>, doris::ColumnValueRange<(doris::PrimitiveType)15>, doris::ColumnValueRange<(doris::PrimitiveType)10>, doris::ColumnValueRange<(doris::PrimitiveType)23>, doris::ColumnValueRange<(doris::PrimitiveType)11>, doris::ColumnValueRange<(doris::PrimitiveType)25>, doris::ColumnValueRange<(doris::PrimitiveType)12>, doris::ColumnValueRange<(doris::PrimitiveType)26>, doris::ColumnValueRange<(doris::PrimitiveType)20>, doris::ColumnValueRange<(doris::PrimitiveType)2>, doris::ColumnValueRange<(doris::PrimitiveType)19>, doris::ColumnValueRange<(doris::PrimitiveType)28>, doris::ColumnValueRange<(doris::PrimitiveType)29>, doris::ColumnValueRange<(doris::PrimitiveType)30>, doris::ColumnValueRange <(doris::PrimitiveType)35> > > > > const*, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > > const&, doris::TupleDescriptor const*, doris::RowDescriptor const*, std::unordered_map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int, std::hash<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::equal_to<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, int> > > const*, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > > const*, std::unordered_map<int, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > >, std::hash<int>, std::equal_to<int>, std ::allocator<std::pair<int const, std::vector<std::shared_ptr<doris::vectorized::VExprContext>, std::allocator<std::shared_ptr<doris::vectorized::VExprContext> > > > > > const*) at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/format/table/iceberg_reader.cpp:463 13# doris::vectorized::FileScanner::_init_parquet_reader(std::unique_ptr<doris::vectorized::ParquetReader, std::default_delete<doris::vectorized::ParquetReader> >&&, doris::FileMetaCache*) at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/scan/file_scanner.cpp:1203 14# doris::vectorized::FileScanner::read_lines_from_range(doris::TFileRangeDesc const&, std::__cxx11::list<long, std::allocator<long> > const&, doris::vectorized::Block*, doris::ExternalFileMappingInfo const&, long*, long*) at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/scan/file_scanner.cpp:1508 15# std::_Function_handler<bool (), doris::RowIdStorageReader::read_batch_external_row(unsigned long, doris::PRequestBlockDesc const&, std::shared_ptr<doris::IdFileMap>, std::vector<doris::SlotDescriptor, std::allocator<doris::SlotDescriptor> >&, std::shared_ptr<doris::FileMapping>, doris::TUniqueId const&, doris::vectorized::Block&, doris::PRuntimeProfileTree*, long*, long*, unsigned long*)::$_0::operator()() const::{lambda()#1}>::_M_invoke(std::_Any_data const&) at /usr/local/ldb-toolchain-v0.26/bin/../lib/gcc/x86_64-pc-linux-gnu/15/include/g++-v15/bits/std_function.h:292 16# doris::vectorized::TaskExecutorSimplifiedScanScheduler::submit_scan_task(doris::vectorized::SimplifiedScanTask, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda()#2}::operator()() const at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/scan/scanner_scheduler.h:339 17# doris::vectorized::ScannerSplitRunner::process_for(std::chrono::duration<long, std::ratio<1l, 1000000000l> >) at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/scan/scanner_scheduler.cpp:408 18# doris::vectorized::PrioritizedSplitRunner::process() at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/executor/time_sharing/prioritized_split_runner.cpp:104 19# doris::vectorized::TimeSharingTaskExecutor::_dispatch_thread() at /home/zcp/repo_center/doris_release/doris/be/src/vec/exec/executor/time_sharing/time_sharing_task_executor.cpp:572 20# doris::Thread::supervise_thread(void*) at /home/zcp/repo_center/doris_release/doris/be/src/util/thread.cpp:461 21# start_thread in /lib/x86_64-linux-gnu/libpthread.so.0 22# __clone in /lib/x86_64-linux-gnu/libc.so.6 ``` ### What You Expected? no crash ### How to Reproduce? execute a query on a view: ```sql WITH RankedData AS ( SELECT SECOND_FLOOR(ts, 10) AS window_ts, bank_id, rack_no, Vrack, ROW_NUMBER() OVER ( PARTITION BY SECOND_FLOOR(ts, 10), bank_id, rack_no ORDER BY ts DESC ) as rn FROM v_rack_dataset ) SELECT window_ts AS ts, bank_id, rack_no, Vrack FROM RankedData WHERE rn = 1 ORDER BY ts ASC; ``` the view created with SQL: ```sql CREATE OR REPLACE VIEW `v_rack_dataset` (ts, bank_id, rack_no, Vrack) AS SELECT `internal`.`testdb`.`rack_dataset`.`ts`, `internal`.`testdb`.`rack_dataset`.`bank_id`, `internal`.`testdb`.`rack_dataset`.`rack_no`, `internal`.`testdb`.`rack_dataset`.`Vrack` FROM `internal`.`testdb`.`rack_dataset` WHERE `internal`.`testdb`.`rack_dataset`.`ts` >= DATE_SUB(CURDATE(), INTERVAL 6 MONTH) UNION ALL SELECT `test_catalog`.`iot`.`rack_dataset`.`ts`, `test_catalog`.`iot`.`rack_dataset`.`bank_id`, `test_catalog`.`iot`.`rack_dataset`.`rack_no`, `test_catalog`.`iot`.`rack_dataset`.`Vrack` FROM `test_catalog`.`iot`.`rack_dataset`; ``` the view union internal table and external iceberg catalog table; ### Anything Else? Direct queries on either internal tables or external tables show no anomalies. ### Are you willing to submit PR? - [ ] Yes I am willing to submit a PR! ### Code of Conduct - [x] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
