Had the similar problem after upgrade from 20.12.5.14

```
[ch-01] 2021.02.24 20:31:13.845342 [ 17553 ] <Fatal> BaseDaemon: ########################################
[ch-01] 2021.02.24 20:31:13.845469 [ 17553 ] <Fatal> BaseDaemon: (version 21.2.4.6 (official build), build id: 6E2E926515F53BCF094B3D6BD7E9EB65BC5BCE6B) (from thread 10568) (query_id: b03fb6ff-7fe1-400e-bb55-d71b0c611525) Received signal Segmentation fault (11)
[ch-01] 2021.02.24 20:31:13.845530 [ 17553 ] <Fatal> BaseDaemon: Address: 0x90 Access: read. Address not mapped to object.
[ch-01] 2021.02.24 20:31:13.845583 [ 17553 ] <Fatal> BaseDaemon: Stack trace: 0xf518654 0xf518379 0xf525f05 0xf526640 0xe6ad857 0xf63b0ac 0xf63b879 0xf63b14c 0xf63b879 0xf63b14c 0xf63b839 0xf63ed80 0xf6432b6 0x84f6e4f 0x84fa8e3 0x7f6e6c5c9ea5 0x7f6e6c2f28dd
[ch-01] 2021.02.24 20:31:13.845660 [ 17553 ] <Fatal> BaseDaemon: 2. ? @ 0xf518654 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.845763 [ 17553 ] <Fatal> BaseDaemon: 3. DB::Connection::receivePacket(std::__1::function<void (Poco::Net::Socket&)>) @ 0xf518379 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.845821 [ 17553 ] <Fatal> BaseDaemon: 4. DB::MultiplexedConnections::receivePacketUnlocked(std::__1::function<void (Poco::Net::Socket&)>) @ 0xf525f05 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.845886 [ 17553 ] <Fatal> BaseDaemon: 5. DB::MultiplexedConnections::drain() @ 0xf526640 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.845969 [ 17553 ] <Fatal> BaseDaemon: 6. DB::RemoteQueryExecutor::finish(std::__1::unique_ptr<DB::RemoteQueryExecutorReadContext, std::__1::default_delete<DB::RemoteQueryExecutorReadContext> >*) @ 0xe6ad857 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846067 [ 17553 ] <Fatal> BaseDaemon: 7. DB::PipelineExecutor::tryAddProcessorToStackIfUpdated(DB::ExecutingGraph::Edge&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, unsigned long) @ 0xf63b0ac in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846135 [ 17553 ] <Fatal> BaseDaemon: 8. DB::PipelineExecutor::prepareProcessor(unsigned long, unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::unique_lock<std::__1::mutex>) @ 0xf63b879 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846180 [ 17553 ] <Fatal> BaseDaemon: 9. DB::PipelineExecutor::tryAddProcessorToStackIfUpdated(DB::ExecutingGraph::Edge&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, unsigned long) @ 0xf63b14c in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846241 [ 17553 ] <Fatal> BaseDaemon: 10. DB::PipelineExecutor::prepareProcessor(unsigned long, unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::unique_lock<std::__1::mutex>) @ 0xf63b879 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846308 [ 17553 ] <Fatal> BaseDaemon: 11. DB::PipelineExecutor::tryAddProcessorToStackIfUpdated(DB::ExecutingGraph::Edge&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, unsigned long) @ 0xf63b14c in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846369 [ 17553 ] <Fatal> BaseDaemon: 12. DB::PipelineExecutor::prepareProcessor(unsigned long, unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::unique_lock<std::__1::mutex>) @ 0xf63b839 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846439 [ 17553 ] <Fatal> BaseDaemon: 13. DB::PipelineExecutor::executeStepImpl(unsigned long, unsigned long, std::__1::atomic<bool>*) @ 0xf63ed80 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846485 [ 17553 ] <Fatal> BaseDaemon: 14. ? @ 0xf6432b6 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846562 [ 17553 ] <Fatal> BaseDaemon: 15. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0x84f6e4f in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846622 [ 17553 ] <Fatal> BaseDaemon: 16. ? @ 0x84fa8e3 in /usr/bin/clickhouse
[ch-01] 2021.02.24 20:31:13.846708 [ 17553 ] <Fatal> BaseDaemon: 17. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so
[ch-01] 2021.02.24 20:31:13.846796 [ 17553 ] <Fatal> BaseDaemon: 18. __clone @ 0xfe8dd in /usr/lib64/libc-2.17.so
[ch-01] 2021.02.24 20:31:14.053143 [ 17553 ] <Fatal> BaseDaemon: Checksum of the binary: 88E22F0584BA91872F2E9BE493E6985B, integrity check passed.
```

_Originally posted by @chyy in https://github.com/ClickHouse/ClickHouse/issues/8997#issuecomment-785538830_
M(UInt64, merge_tree_coarse_index_granularity, 8, "If the index segment can contain the required keys, divide it into as many parts and recursively check them.", 0) \
    M(UInt64, merge_tree_max_rows_to_use_cache, (128 * 8192), "The maximum number of rows per request, to use the cache of uncompressed data. If the request is large, the cache is not used. (For large queries not to flush out the cache.)", 0) \
    M(UInt64, merge_tree_max_bytes_to_use_cache, (192 * 10 * 1024 * 1024), "The maximum number of bytes per request, to use the cache of uncompressed data. If the request is large, the cache is not used. (For large queries not to flush out the cache.)", 0) \
    M(Bool, do_not_merge_across_partitions_select_final, false, "Merge parts only in one partition in select final", 0) \
    \
    M(UInt64, mysql_max_rows_to_insert, 65536, "The maximum number of rows in MySQL batch insertion of the MySQL storage engine", 0) \
    \
    M(UInt64, optimize_min_equality_disjunction_chain_length, 3, "The minimum length of the expression `expr = x1 OR ... expr = xN` for optimization ", 0) \
    \
    M(UInt64, min_bytes_to_use_direct_io, 0, "The minimum number of bytes for reading the data with O_DIRECT option during SELECT queries execution. 0 - disabled.", 0) \
    M(UInt64, min_bytes_to_use_mmap_io, 0, "The minimum number of bytes for reading the data with mmap option during SELECT queries execution. 0 - disabled.", 0) \
    M(Bool, checksum_on_read, true, "Validate checksums on reading. It is enabled by default and should be always enabled in production. Please do not expect any benefits in disabling this setting. It may only be used for experiments and benchmarks. The setting only applicable for tables of MergeTree family. Checksums are always validated for other table engines and when receiving data over network.", 0) \
    \
    M(Bool, force_index_by_date, 0, "Throw an exception if there is a partition key in a table, and it is not used.", 0) \
    M(Bool, force_primary_key, 0, "Throw an exception if there is primary key in a table, and it is not used.", 0) \
    M(String, force_data_skipping_indices, "", "Comma separated list of strings or literals with the name of the data skipping indices that should be used during query execution, otherwise an exception will be thrown.", 0) \
    \
    M(Float, max_streams_to_max_threads_ratio, 1, "Allows you to use more sources than the number of threads - to more evenly distribute work across threads. It is assumed that this is a temporary solution, since it will be possible in the future to make the number of sources equal to the number of threads, but for each source to dynamically select available work for itself.", 0) \
    M(Float, max_streams_multiplier_for_merge_tables, 5, "Ask more streams when reading from Merge table. Streams will be spread across tables that Merge table will use. This allows more even distribution of work across threads and especially helpful when merged tables differ in size.", 0) \
    \
    M(String, network_compression_method, "LZ4", "Allows you to select the method of data compression when writing.", 0) \
    \
    M(Int64, network_zstd_compression_level, 1, "Allows you to select the level of ZSTD compression.", 0) \
    \
    M(UInt64, priority, 0, "Priority of the query. 1 - the highest, higher value - lower priority; 0 - do not use priorities.", 0) \
    M(Int64, os_thread_priority, 0, "If non zero - set corresponding 'nice' value for query processing threads. Can be used to adjust query priority for OS scheduler.", 0) \
    \
    M(Bool, log_queries, 1, "Log requests and write the log to the system table.", 0) \
    M(LogQueriesType, log_queries_min_type, QueryLogElementType::QUERY_START, "Minimal type in query_log to log, possible values (from low to high): QUERY_START, QUERY_FINISH, EXCEPTION_BEFORE_START, EXCEPTION_WHILE_PROCESSING.", 0) \
    M(Milliseconds, log_queries_min_query_duration_ms, 0, "Minimal time for the query to run, to get to the query_log/query_thread_log.", 0) \