You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

内核6.5.0启动时出现大量bcache相关UBSAN数组索引越界报错的咨询

内核6.5.0启动时出现大量bcache相关UBSAN数组索引越界报错的咨询

问题背景

我搭建了基于两个设备的btrfs RAID1文件系统,这两个设备是bcache设备(NVMe+HDD)通过cryptsetup luksOpen映射出来的。这个btrfs文件系统运行起来完全正常,但每次启动都会弹出大量类似下面的内核报错信息,打断了图形启动界面,看起来可能很严重,想问问这是什么情况。

报错日志

2023-12-19T23:21:41.595579+01:00 HostName kernel: [    4.042319] ================================================================================

2023-12-19T23:21:41.595580+01:00 HostName kernel: [    4.042327] UBSAN: array-index-out-of-bounds in /build/linux-SXblTa/linux-6.5.0/drivers/md/bcache/bset.c:1098:3

2023-12-19T23:21:41.595580+01:00 HostName kernel: [    4.042338] index 4 is out of range for type 'btree_iter_set [4]'

2023-12-19T23:21:41.595580+01:00 HostName kernel: [    4.042344] CPU: 6 PID: 133 Comm: kworker/6:1 Not tainted 6.5.0-14-generic #14-Ubuntu

2023-12-19T23:21:41.595581+01:00 HostName kernel: [    4.042346] Hardware name: ASUS System Product Name/PRIME X670E-PRO WIFI, BIOS 1813 10/13/2023

2023-12-19T23:21:41.595581+01:00 HostName kernel: [    4.042347] Workqueue: events register_cache_worker [bcache]

2023-12-19T23:21:41.595581+01:00 HostName kernel: [    4.042355] Call Trace:

2023-12-19T23:21:41.595581+01:00 HostName kernel: [    4.042356]  <TASK>

2023-12-19T23:21:41.595582+01:00 HostName kernel: [    4.042357]  dump_stack_lvl+0x48/0x70

2023-12-19T23:21:41.595582+01:00 HostName kernel: [    4.042359]  dump_stack+0x10/0x20

2023-12-19T23:21:41.595582+01:00 HostName kernel: [    4.042361]  __ubsan_handle_out_of_bounds+0xc6/0x110

2023-12-19T23:21:41.595582+01:00 HostName kernel: [    4.042364]  bch_btree_iter_push+0x2d3/0x4f0 [bcache]

2023-12-19T23:21:41.595583+01:00 HostName kernel: [    4.042373]  bch_btree_node_read_done+0xcb/0x410 [bcache]

2023-12-19T23:21:41.595583+01:00 HostName kernel: [    4.042382]  bch_btree_node_read+0xf8/0x1e0 [bcache]

2023-12-19T23:21:41.595583+01:00 HostName kernel: [    4.042391]  ? __pfx_closure_sync_fn+0x10/0x10 [bcache]

2023-12-19T23:21:41.595584+01:00 HostName kernel: [    4.042400]  bch_btree_node_get.part.0+0x15c/0x330 [bcache]

2023-12-19T23:21:41.595584+01:00 HostName kernel: [    4.042408]  ? __bch_btree_ptr_invalid+0x66/0xe0 [bcache]

2023-12-19T23:21:41.595584+01:00 HostName kernel: [    4.042416]  ? __pfx_up_write+0x10/0x10

2023-12-19T23:21:41.595584+01:00 HostName kernel: [    4.042419]  bch_btree_node_get+0x16/0x30 [bcache]

2023-12-19T23:21:41.595585+01:00 HostName kernel: [    4.042427]  run_cache_set+0x596/0x850 [bcache]

2023-12-19T23:21:41.595585+01:00 HostName kernel: [    4.042435]  ? srso_alias_return_thunk+0x5/0x7f

2023-12-19T23:21:41.595586+01:00 HostName kernel: [    4.042439]  register_cache_set+0x1a2/0x210 [bcache]

2023-12-19T23:21:41.595587+01:00 HostName kernel: [    4.042448]  register_cache+0x11a/0x1a0 [bcache]

2023-12-19T23:21:41.595587+01:00 HostName kernel: [    4.042456]  register_cache_worker+0x22/0x80 [bcache]

2023-12-19T23:21:41.595587+01:00 HostName kernel: [    4.042464]  process_one_work+0x220/0x440

2023-12-19T23:21:41.595587+01:00 HostName kernel: [    4.042467]  worker_thread+0x4d/0x3f0

2023-12-19T23:21:41.595588+01:00 HostName kernel: [    4.042468]  ? srso_alias_return_thunk+0x5/0x7f

2023-12-19T23:21:41.595588+01:00 HostName kernel: [    4.042470]  ? _raw_spin_lock_irqsave+0xe/0x20

2023-12-19T23:21:41.595588+01:00 HostName kernel: [    4.042472]  ? __pfx_worker_thread+0x10/0x10

2023-12-19T23:21:41.595588+01:00 HostName kernel: [    4.042474]  kthread+0xef/0x120

2023-12-19T23:21:41.595589+01:00 HostName kernel: [    4.042476]  ? __pfx_kthread+0x10/0x10

2023-12-19T23:21:41.595589+01:00 HostName kernel: [    4.042478]  ret_from_fork+0x44/0x70

2023-12-19T23:21:41.595590+01:00 HostName kernel: [    4.042480]  ? __pfx_kthread+0x10/0x10

2023-12-19T23:21:41.595590+01:00 HostName kernel: [    4.042482]  ret_from_fork_asm+0x1b/0x30

2023-12-19T23:21:41.595590+01:00 HostName kernel: [    4.042485]  </TASK>

2023-12-19T23:21:41.595590+01:00 HostName kernel: [    4.042486] ================================================================================

2023-12-19T23:21:41.598663+01:00 HostName kernel: [    4.091709] bcache: bch_journal_replay() journal replay done, 0 keys in 2 entries, seq 140818

问题分析与建议

首先别太慌,咱们拆解一下这个报错:

  • 这是**UBSAN(未定义行为检查器)**抛出的数组索引越界错误,来自bcache驱动的bset.c文件第1098行——简单说就是代码里访问了一个长度为4的数组的第5个元素(索引从0开始,所以索引4超出范围)。
  • 但你提到btrfs文件系统运行完全正常,而且日志最后显示bch_journal_replay()已经完成了日志重放,说明bcache初始化其实是成功的,这个报错大概率是驱动代码里一个不影响实际功能的小瑕疵触发了UBSAN的严格检查,而非会导致数据损坏的严重bug。
  • 这个问题出在启动阶段的register_cache_worker工作队列里,启动完成后驱动已经正常工作,所以日常使用不会受影响。

给你几个处理方案:

  1. 暂时忽略,等待内核更新:Ubuntu的6.5.x内核后续版本大概率会修复这个bcache的UBSAN触发问题,毕竟这是一个明显的代码检查告警,官方维护者会跟进的。
  2. 临时屏蔽报错(仅为美观):如果觉得启动时的报错太碍眼,可以尝试在GRUB启动参数中添加ubsan_ignore=array-index-out-of-bounds,这样UBSAN会跳过这类越界检查。不过这只是临时方案,不推荐长期用,还是等官方修复更稳妥。
  3. 检查bcache配置:可以确认一下你的bcache设备是否正常初始化,比如用bcache-super-show查看设备元数据,但从日志看元数据重放已经完成,大概率没问题。

备注:内容来源于stack exchange,提问作者Fade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 12:29:37