Skip to content

SIGSEGV in ColumnArray::filterNullable when filtering Array(Nullable(...)) columns #1975

Description

@ottony

Type of problem

Bug report: ClickHouse process crashed with SIGSEGV during a SELECT query.

Summary

We had a production incident on ClickHouse 25.8.16.10002.altinitystable where SELECT queries reading and filtering Array(Nullable(...)) columns caused SIGSEGV on both primary and secondary replicas.

The stack traces point to ColumnArray::filterNullable while applying row filters to nested array data.

The SIGSEGV sequence we observed was:

  1. A broad validation query over multiple Array(Nullable(Int64)) columns, filtered by notEmpty(Array(Nullable(String))), caused SIGSEGV on the primary replica.
  2. A similar broad validation query with the same column expressions also caused SIGSEGV on the secondary replica, using a narrower date range.
  3. A narrower query over a specific part caused SIGSEGV again on the secondary replica.

We have not tested this against a ClickHouse Official build of the same version. The incident happened on an Altinity Stable build in a production Kubernetes cluster.

Environment

Version: 25.8.16.10002.altinitystable (altinity build)
Build id: EEA8F02F2816016AC37620F31126A40D677A648A
Git hash: c63afbef60f93b08179bb2f2727c8cc77391d3cc
Interface: ClickHouse SQL over the native interface
Deployment: Kubernetes using Altinity ClickHouse Operator
Engine: ReplicatedReplacingMergeTree
Storage policy: s3_tiered

We observed crashes on both a primary replica and a secondary replica, from different query executions.

Table Shape

The full table schema is large. These are the relevant properties and column types:

CREATE TABLE prod_db.large_replicated_table
(
    request_id UUID,
    organization_id UInt64,
    event_timestamp DateTime64(3),
    `nested_column.name` Array(Nullable(String)),
    `nested_column.counter_1` Array(Nullable(Int64)),
    `nested_column.counter_2` Array(Nullable(Int64)),
    `nested_column.counter_3` Array(Nullable(Int64)),
    `nested_column.counter_4` Array(Nullable(Int64)),
    `nested_column.counter_5` Array(Nullable(Int64))
    -- many other columns omitted
)
ENGINE = ReplicatedReplacingMergeTree(...)
PARTITION BY toYYYYMM(event_timestamp)
ORDER BY (organization_id, event_timestamp, request_id)
TTL toDateTime(event_timestamp) + toIntervalDay(35) TO VOLUME 's3_cached'
SETTINGS
  index_granularity = 8192,
  storage_policy = 's3_tiered',
  lightweight_mutation_projection_mode = 'rebuild',
  deduplicate_merge_projection_mode = 'rebuild';

Queries

This broad validation query caused SIGSEGV on the primary replica:
WITH
  toDateTime64('2026-02-01 00:00:00', 3) AS start_ts,
  toDateTime64('2026-03-01 00:00:00', 3) AS end_ts,
  4294967295 AS uint32_max
SELECT
  count() AS rows_checked,
  countIf(
    arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_1`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_2`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_3`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_4`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_5`)
  ) AS invalid_rows
FROM large_replicated_table
PREWHERE event_timestamp >= start_ts
  AND event_timestamp < end_ts
WHERE notEmpty(`nested_column.name`);
A similar broad validation query with the same column expressions caused SIGSEGV on the secondary replica, using a narrower date range:
WITH
  toDateTime64('2026-02-04 00:00:00', 3) AS start_ts,
  toDateTime64('2026-02-05 00:00:00', 3) AS end_ts,
  4294967295 AS uint32_max
SELECT
  count() AS rows_checked,
  countIf(
    arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_1`)
    OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_2`)
    OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_3`)
    OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_4`)
    OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_5`)
  ) AS invalid_rows
FROM large_replicated_table
PREWHERE (event_timestamp >= start_ts) AND (event_timestamp < end_ts)
WHERE notEmpty(`nested_column.name`);
The same date range with only `count()` succeeded:
WITH
  toDateTime64('2026-02-04 00:00:00', 3) AS start_ts,
  toDateTime64('2026-02-05 00:00:00', 3) AS end_ts
SELECT count() AS rows_checked
FROM large_replicated_table
PREWHERE event_timestamp >= start_ts
  AND event_timestamp < end_ts
SETTINGS max_threads = 1, max_block_size = 8192, allow_experimental_analyzer = 0;

Result:

rows_checked: ~166M
Related `notEmpty(Array(Nullable(String)))` query that failed with a `4.00 EiB` allocation attempt:
WITH
  toDateTime64('2026-02-04 00:00:00', 3) AS start_ts,
  toDateTime64('2026-02-05 00:00:00', 3) AS end_ts
SELECT
  count() AS rows_checked,
  countIf(notEmpty(`nested_column.name`)) AS rows_with_array_values
FROM large_replicated_table
PREWHERE event_timestamp >= start_ts
  AND event_timestamp < end_ts
SETTINGS max_threads = 1, max_block_size = 8192, allow_experimental_analyzer = 0;
This narrower query caused SIGSEGV on the secondary replica after the `4.00 EiB` allocation attempt:
WITH
  toDateTime64('2026-02-04 00:00:00', 3) AS start_ts,
  toDateTime64('2026-02-05 00:00:00', 3) AS end_ts
SELECT
  count() AS rows_checked,
  countIf(notEmpty(`nested_column.name`)) AS rows_with_array_values
FROM large_replicated_table
PREWHERE event_timestamp >= start_ts
  AND event_timestamp < end_ts
WHERE _part = '<part_name>'
SETTINGS
  max_threads = 1,
  max_block_size = 1024,
  max_memory_usage = 4000000000,
  allow_experimental_analyzer = 0;

We do not currently have a minimal reproducer or obfuscated sample data. The crashes happened while reading old production parts.

Expected Behavior

A SELECT query over Array(Nullable(...)) columns should not crash the server.

Observed Behavior

A related query on the secondary replica failed with an impossible memory allocation request before the narrower query crashed again. The same query log shows `MemoryTracker` reporting both current and peak query memory usage as `4.00 EiB`:
2026.06.18 15:56:57.730821 [ 1239 ] {<query_id>} <Debug> executeQuery: (from [::1]:53526) (query 1, line 1) WITH toDateTime64('2026-02-04 00:00:00', 3) AS start_ts, toDateTime64('2026-02-05 00:00:00', 3) AS end_ts SELECT count() AS rows_checked, countIf(notEmpty(`nested_column.name`)) AS rows_with_array_values FROM large_replicated_table PREWHERE event_timestamp >= start_ts AND event_timestamp < end_ts SETTINGS max_threads = 1, max_block_size = 8192, allow_experimental_analyzer = 0; (stage: Complete)
2026.06.18 15:56:57.807733 [ 1239 ] {<query_id>} <Debug> large_replicated_table (SelectExecutor): Selected 3 parts by partition key, 3 parts by primary key, ~130k marks by primary key, ~130k marks to read from 129 ranges
2026.06.18 15:56:57.854634 [ 1139 ] {<query_id>} <Debug> MemoryTracker: Query current memory usage: 4.00 EiB.
Code: 241. DB::Exception: (total) memory limit exceeded: would use 4.00 EiB (attempt to allocate chunk of 4.00 EiB bytes), current RSS: ~17 GiB, maximum: ~216 GiB. OvercommitTracker decision: Query was selected to stop by OvercommitTracker: While executing MergeTreeSelect(pool: ReadPoolInOrder, algorithm: InOrder). (MEMORY_LIMIT_EXCEEDED)
2026.06.18 15:56:57.856654 [ 1239 ] {<query_id>} <Debug> MemoryTracker: Query peak memory usage: 4.00 EiB.
The broad primary-replica query crashed with SIGSEGV while filtering `Array(Nullable(Int64))` columns:
[clickhouse-primary-0] 2026.06.17 23:35:25.828100 [ 85 ] <Fatal> BaseDaemon: ########################################
[clickhouse-primary-0] 2026.06.17 23:35:25.828984 [ 85 ] <Fatal> BaseDaemon: (version 25.8.16.10002.altinitystable (altinity build), build id: EEA8F02F2816016AC37620F31126A40D677A648A, git hash: c63afbef60f93b08179bb2f2727c8cc77391d3cc) (from thread 1534) (query_id: <query_id>) (query: WITH
  toDateTime64('2026-02-01 00:00:00', 3) AS start_ts,
  toDateTime64('2026-03-01 00:00:00', 3) AS end_ts,
  4294967295 AS uint32_max
SELECT
  count() AS rows_checked,
  countIf(
    arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_1`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_2`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_3`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_4`)
    OR arrayExists(x -> ifNull(x < 0 OR x > uint32_max, 0), `nested_column.counter_5`)
  ) AS invalid_rows
FROM large_replicated_table
PREWHERE event_timestamp >= start_ts
  AND event_timestamp < end_ts
WHERE notEmpty(`nested_column.name`);) Received signal Segmentation fault (11)
[clickhouse-primary-0] 2026.06.17 23:35:25.829050 [ 85 ] <Fatal> BaseDaemon: Address: 0x7fe5b166a008. Access: read. Attempted access has violated the permissions assigned to the memory area.
[clickhouse-primary-0] 2026.06.17 23:35:25.829162 [ 85 ] <Fatal> BaseDaemon: 2. memcpy @ 0x000000000ca32fd7
[clickhouse-primary-0] 2026.06.17 23:35:25.829224 [ 85 ] <Fatal> BaseDaemon: 3. void DB::filterArraysImpl<long>(DB::PODArray<long, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, DB::PODArray<unsigned long, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, DB::PODArray<long, 4096ul, Allocator<false, false>, 63ul, 64ul>&, DB::PODArray<unsigned long, 4096ul, Allocator<false, false>, 63ul, 64ul>&, DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) @ 0x0000000018af713a
[clickhouse-primary-0] 2026.06.17 23:35:25.829264 [ 85 ] <Fatal> BaseDaemon: 4. COW<DB::IColumn>::immutable_ptr<DB::IColumn> DB::ColumnArray::filterNumber<long>(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x00000000188330df
[clickhouse-primary-0] 2026.06.17 23:35:25.829341 [ 85 ] <Fatal> BaseDaemon: 5. DB::ColumnArray::filter(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018831b6a
[clickhouse-primary-0] 2026.06.17 23:35:25.829424 [ 85 ] <Fatal> BaseDaemon: 6. DB::ColumnArray::filterNullable(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018833b1d
[clickhouse-primary-0] 2026.06.17 23:35:25.829525 [ 85 ] <Fatal> BaseDaemon: 7. DB::ColumnArray::filter(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018832233
[clickhouse-primary-0] 2026.06.17 23:35:25.829565 [ 85 ] <Fatal> BaseDaemon: 8. DB::FilterDescription::filter(DB::IColumn const&, long) const @ 0x0000000018b00458
[clickhouse-primary-0] 2026.06.17 23:35:25.829609 [ 85 ] <Fatal> BaseDaemon: 9. DB::FilterTransform::doTransform(DB::Chunk&) @ 0x000000001a00fbbd
The similar broad secondary-replica query crashed with SIGSEGV while filtering `Array(Nullable(Int64))` columns:
[clickhouse-secondary-0] 2026.06.18 15:42:40.542970 [ 88 ] <Fatal> BaseDaemon: ########## Short fault info ############
[clickhouse-secondary-0] 2026.06.18 15:42:40.543029 [ 88 ] <Fatal> BaseDaemon: (version 25.8.16.10002.altinitystable (altinity build), build id: EEA8F02F2816016AC37620F31126A40D677A648A, git hash: c63afbef60f93b08179bb2f2727c8cc77391d3cc, architecture: x86_64) (from thread 1480) Received signal 11
[clickhouse-secondary-0] 2026.06.18 15:42:40.543041 [ 88 ] <Fatal> BaseDaemon: Signal description: Segmentation fault
[clickhouse-secondary-0] 2026.06.18 15:42:40.543073 [ 88 ] <Fatal> BaseDaemon: Address: 0x7fad35600038. Access: read. Address not mapped to object.
[clickhouse-secondary-0] 2026.06.18 15:42:40.543109 [ 88 ] <Fatal> BaseDaemon: Stack trace: 0x000000000ca3309f 0x0000000018af713a 0x00000000188330df 0x0000000018831b6a 0x0000000018833b1d 0x0000000018832233 0x0000000018b00458 0x000000001a00fbbd 0x000000001a00ed54 0x0000000015c091d3 0x0000000019d0dc5a 0x0000000019d2f742 0x0000000019d21290 0x0000000019d25143 0x00000000136f4feb 0x00000000136fc366 0x00000000136f1fd2 0x00000000136f9a9a 0x00007faf64127ac3 0x00007faf641b98d0
[clickhouse-secondary-0] 2026.06.18 15:42:40.543127 [ 88 ] <Fatal> BaseDaemon: ########################################
[clickhouse-secondary-0] 2026.06.18 15:42:40.544041 [ 88 ] <Fatal> BaseDaemon: (version 25.8.16.10002.altinitystable (altinity build), build id: EEA8F02F2816016AC37620F31126A40D677A648A, git hash: c63afbef60f93b08179bb2f2727c8cc77391d3cc) (from thread 1480) (query_id: <query_id>) (query: WITH
    toDateTime64('2026-02-04 00:00:00', 3) AS start_ts,
    toDateTime64('2026-02-05 00:00:00', 3) AS end_ts,
    4294967295 AS uint32_max
SELECT
    count() AS rows_checked,
    countIf(
        arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_1`)
        OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_2`)
        OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_3`)
        OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_4`)
        OR arrayExists(x -> ifNull((x < 0) OR (x > uint32_max), 0), `nested_column.counter_5`)
    ) AS invalid_rows
FROM large_replicated_table
PREWHERE (event_timestamp >= start_ts) AND (event_timestamp < end_ts)
WHERE notEmpty(`nested_column.name`)) Received signal Segmentation fault (11)
[clickhouse-secondary-0] 2026.06.18 15:42:40.544061 [ 88 ] <Fatal> BaseDaemon: Address: 0x7fad35600038. Access: read. Address not mapped to object.
[clickhouse-secondary-0] 2026.06.18 15:42:40.544073 [ 88 ] <Fatal> BaseDaemon: Stack trace: 0x000000000ca3309f 0x0000000018af713a 0x00000000188330df 0x0000000018831b6a 0x0000000018833b1d 0x0000000018832233 0x0000000018b00458 0x000000001a00fbbd 0x000000001a00ed54 0x0000000015c091d3 0x0000000019d0dc5a 0x0000000019d2f742 0x0000000019d21290 0x0000000019d25143 0x00000000136f4feb 0x00000000136fc366 0x00000000136f1fd2 0x00000000136f9a9a 0x00007faf64127ac3 0x00007faf641b98d0
[clickhouse-secondary-0] 2026.06.18 15:42:40.544130 [ 88 ] <Fatal> BaseDaemon: 2. memcpy @ 0x000000000ca3309f
[clickhouse-secondary-0] 2026.06.18 15:42:40.544183 [ 88 ] <Fatal> BaseDaemon: 3. void DB::filterArraysImpl<long>(DB::PODArray<long, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, DB::PODArray<unsigned long, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, DB::PODArray<long, 4096ul, Allocator<false, false>, 63ul, 64ul>&, DB::PODArray<unsigned long, 4096ul, Allocator<false, false>, 63ul, 64ul>&, DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) @ 0x0000000018af713a
[clickhouse-secondary-0] 2026.06.18 15:42:40.544210 [ 88 ] <Fatal> BaseDaemon: 4. COW<DB::IColumn>::immutable_ptr<DB::IColumn> DB::ColumnArray::filterNumber<long>(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x00000000188330df
[clickhouse-secondary-0] 2026.06.18 15:42:40.544254 [ 88 ] <Fatal> BaseDaemon: 5. DB::ColumnArray::filter(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018831b6a
[clickhouse-secondary-0] 2026.06.18 15:42:40.544280 [ 88 ] <Fatal> BaseDaemon: 6. DB::ColumnArray::filterNullable(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018833b1d
[clickhouse-secondary-0] 2026.06.18 15:42:40.544303 [ 88 ] <Fatal> BaseDaemon: 7. DB::ColumnArray::filter(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018832233
[clickhouse-secondary-0] 2026.06.18 15:42:40.544320 [ 88 ] <Fatal> BaseDaemon: 8. DB::FilterDescription::filter(DB::IColumn const&, long) const @ 0x0000000018b00458
[clickhouse-secondary-0] 2026.06.18 15:42:40.544346 [ 88 ] <Fatal> BaseDaemon: 9. DB::FilterTransform::doTransform(DB::Chunk&) @ 0x000000001a00fbbd
[clickhouse-secondary-0] 2026.06.18 15:42:40.544367 [ 88 ] <Fatal> BaseDaemon: 10. DB::FilterTransform::transform(DB::Chunk&) @ 0x000000001a00ed54
[clickhouse-secondary-0] 2026.06.18 15:42:40.544387 [ 88 ] <Fatal> BaseDaemon: 11. DB::ISimpleTransform::transform(DB::Chunk&, DB::Chunk&) @ 0x0000000015c091d3
[clickhouse-secondary-0] 2026.06.18 15:42:40.544405 [ 88 ] <Fatal> BaseDaemon: 12. DB::ISimpleTransform::work() @ 0x0000000019d0dc5a
[clickhouse-secondary-0] 2026.06.18 15:42:42.012518 [ 88 ] <Fatal> BaseDaemon: Report this error to https://github.com/Altinity/ClickHouse/issues
The narrower secondary-replica query crashed with SIGSEGV while filtering `Array(Nullable(String))`:
[clickhouse-secondary-0] 2026.06.18 16:01:44.006728 [ 88 ] <Fatal> BaseDaemon: ########################################
[clickhouse-secondary-0] 2026.06.18 16:01:44.006799 [ 88 ] <Fatal> BaseDaemon: (version 25.8.16.10002.altinitystable (altinity build), build id: EEA8F02F2816016AC37620F31126A40D677A648A, git hash: c63afbef60f93b08179bb2f2727c8cc77391d3cc) (from thread 1131) (query_id: <query_id>) (query: WITH
  toDateTime64('2026-02-04 00:00:00', 3) AS start_ts,
  toDateTime64('2026-02-05 00:00:00', 3) AS end_ts
SELECT
  count() AS rows_checked,
  countIf(notEmpty(`nested_column.name`)) AS rows_with_array_values
FROM large_replicated_table
PREWHERE event_timestamp >= start_ts
  AND event_timestamp < end_ts
WHERE _part = '<part_name>'
SETTINGS
  max_threads = 1,
  max_block_size = 1024,
  max_memory_usage = 4000000000,
  allow_experimental_analyzer = 0;) Received signal Segmentation fault (11)
[clickhouse-secondary-0] 2026.06.18 16:01:44.006819 [ 88 ] <Fatal> BaseDaemon: Address: 0x7f3837400000. Access: read. Address not mapped to object.
[clickhouse-secondary-0] 2026.06.18 16:01:44.006829 [ 88 ] <Fatal> BaseDaemon: Stack trace: 0x000000000ca33040 0x0000000018832755 0x0000000018833b1d 0x0000000018832233 0x0000000018b00458 0x000000001a00fbbd 0x000000001a00ed54 0x0000000015c091d3 0x0000000019d0dc5a 0x0000000019d2f742 0x0000000019d21290 0x0000000019d1f4dd 0x0000000019d39b9a 0x00000000136f1fd2
 0x00000000136f9a9a 0x00007f3b5566fac3 0x00007f3b557018d0
[clickhouse-secondary-0] 2026.06.18 16:01:44.006884 [ 88 ] <Fatal> BaseDaemon: 2. memcpy @ 0x000000000ca33040
[clickhouse-secondary-0] 2026.06.18 16:01:44.006933 [ 88 ] <Fatal> BaseDaemon: 3. DB::ColumnArray::filter(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018832755
[clickhouse-secondary-0] 2026.06.18 16:01:44.006952 [ 88 ] <Fatal> BaseDaemon: 4. DB::ColumnArray::filterNullable(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018833b1d
[clickhouse-secondary-0] 2026.06.18 16:01:44.006974 [ 88 ] <Fatal> BaseDaemon: 5. DB::ColumnArray::filter(DB::PODArray<char8_t, 4096ul, Allocator<false, false>, 63ul, 64ul> const&, long) const @ 0x0000000018832233
[clickhouse-secondary-0] 2026.06.18 16:01:44.007001 [ 88 ] <Fatal> BaseDaemon: 6. DB::FilterDescription::filter(DB::IColumn const&, long) const @ 0x0000000018b00458
[clickhouse-secondary-0] 2026.06.18 16:01:44.007030 [ 88 ] <Fatal> BaseDaemon: 7. DB::FilterTransform::doTransform(DB::Chunk&) @ 0x000000001a00fbbd
[clickhouse-secondary-0] 2026.06.18 16:01:44.007052 [ 88 ] <Fatal> BaseDaemon: 8. DB::FilterTransform::transform(DB::Chunk&) @ 0x000000001a00ed54
[clickhouse-secondary-0] 2026.06.18 16:01:44.007072 [ 88 ] <Fatal> BaseDaemon: 9. DB::ISimpleTransform::transform(DB::Chunk&, DB::Chunk&) @ 0x0000000015c091d3
[clickhouse-secondary-0] 2026.06.18 16:01:44.007099 [ 88 ] <Fatal> BaseDaemon: 10. DB::ISimpleTransform::work() @ 0x0000000019d0dc5a
[clickhouse-secondary-0] 2026.06.18 16:01:44.176117 [ 88 ] <Fatal> BaseDaemon: Report this error to https://github.com/Altinity/ClickHouse/issues

Possible Related Code Path

Based on the stack traces and query shapes, the crashes happen while applying row filters to Array(Nullable(...)) columns. The relevant paths shown in the logs are:

FilterTransform::doTransform
  -> FilterDescription::filter
  -> ColumnArray::filter
  -> ColumnArray::filterNullable
  -> ColumnArray::filterNumber on nested Int64 data
  -> filterArraysImpl<long>
  -> memcpy while copying nested numeric array data

FilterTransform::doTransform
  -> FilterDescription::filter
  -> ColumnArray::filter
  -> ColumnArray::filterNullable
  -> ColumnArray::filter on nested String data
  -> memcpy while copying nested array data

The 4.00 EiB allocation attempt may be related because it happened in the same investigation path while reading and filtering the Array(Nullable(String)) column. We do not know whether it shares the same root cause as the SIGSEGVs.

Questions

  1. Is this a known issue in 25.8.16.10002.altinitystable?
  2. Could this be related to ColumnArray::filterNullable, lazy materialization, or filtering of Array(Nullable(...)) columns?
  3. Is there a recommended Altinity Stable build or patch that addresses this?
  4. Are there recommended mitigations to avoid similar crashes on old parts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions