Kylin Desktop V11 2603 挂载 SKF 后立即操作卡死

jc39
jc39
发布于 2026-09-16 / 4 阅读
0
0

Kylin Desktop V11 2603 挂载 SKF 后立即操作卡死

现象

在 Kylin Desktop V11 2603 系统中,插入 SKF U 盘设备后,系统会自动挂载。若立即调用 SKF SDK 进行设备枚举,或调用 umount 卸载设备,会出现卡住、无响应的情况;但如果在插入后等待约 20 秒,再执行上述操作,则可正常运行。

排查

插入 SKF U 盘并等待系统自动挂载后,立刻使用 umount 命令卸载设备:

csis@csis-pc:~$ lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 931.5G  0 disk
sdb           8:16   1   3.4G  0 disk
└─sdb1        8:17   1   3.4G  0 part /run/media/csis/Factory
nvme0n1     259:0    0 232.9G  0 disk
├─nvme0n1p1 259:1    0   512M  0 part /boot/efi
├─nvme0n1p2 259:2    0     2G  0 part /boot
├─nvme0n1p3 259:3    0    93G  0 part /sysroot/ostree/deploy/kylin/var
│                                     /var
│                                     /sysroot
│                                     /usr
│                                     /
├─nvme0n1p4 259:4    0  25.9G  0 part
├─nvme0n1p5 259:5    0    93G  0 part /root
│                                     /home
│                                     /data
└─nvme0n1p6 259:6    0  18.6G  0 part [SWAP]
csis@csis-pc:~$ umount /run/media/csis/Factory

此时已经卡住,新开 SSH 连接,查看不可中断睡眠状态的进程信息:

csis@csis-pc:~$ ps -eo pid,state,comm | awk '$2 == "D"'
     11 D kworker/u16:0+events_freezable_pwr_efficient
    170 D kworker/u16:4+flush-8:16
   4578 D kworker/u18:2+i915_flip
  56359 D hwinfo
csis@csis-pc:~$ echo w | sudo tee /proc/sysrq-trigger
csis@csis-pc:~$ sudo dmesg -Hw
[  +9.864187] sysrq: Show Blocked State
[  +0.000024] task:kworker/u16:0   state:D stack:0     pid:11    tgid:11    ppid:2      flags:0x00004000
[  +0.000006] Workqueue: events_freezable_pwr_efficient disk_events_workfn
[  +0.000021] Call Trace:
[  +0.000002]  <TASK>
[  +0.000004]  __schedule+0x2dc/0x610
[  +0.000005]  schedule+0x33/0xc0
[  +0.000002]  io_schedule+0x46/0x80
[  +0.000002]  blk_mq_get_tag+0x117/0x2a0
[  +0.000003]  ? __pfx_autoremove_wake_function+0x10/0x10
[  +0.000006]  __blk_mq_alloc_requests+0x1bb/0x500
[  +0.000020]  blk_mq_alloc_request+0x22b/0x2c0
[  +0.000003]  ? get_nohz_timer_target+0x29/0x150
[  +0.000004]  scsi_execute_cmd+0xea/0x300
[  +0.000004]  scsi_test_unit_ready+0x6e/0xf0
[  +0.000003]  sd_check_events+0x108/0x1a0
[  +0.000022]  disk_check_events+0x39/0x110
[  +0.000003]  disk_events_workfn+0x19/0x20
[  +0.000002]  process_one_work+0x188/0x3c0
[  +0.000023]  worker_thread+0x32f/0x4e0
[  +0.000002]  ? __pfx_worker_thread+0x10/0x10
[  +0.000002]  kthread+0xef/0x120
[  +0.000003]  ? __pfx_kthread+0x10/0x10
[  +0.000003]  ret_from_fork+0xc3/0xf0
[  +0.000003]  ? __pfx_kthread+0x10/0x10
[  +0.000003]  ret_from_fork_asm+0x1a/0x30
[  +0.000004]  </TASK>
[  +0.000016] task:kworker/u16:4   state:D stack:0     pid:170   tgid:170   ppid:2      flags:0x00004000
[  +0.000004] Workqueue: writeback wb_workfn (flush-8:16)
[  +0.000004] Call Trace:
[  +0.000001]  <TASK>
[  +0.000002]  __schedule+0x2dc/0x610
[  +0.000003]  schedule+0x33/0xc0
[  +0.000018]  io_schedule+0x46/0x80
[  +0.000002]  folio_wait_bit_common+0x142/0x370
[  +0.000004]  ? __pfx_wake_page_function+0x10/0x10
[  +0.000004]  __folio_lock+0x17/0x20
[  +0.000002]  write_cache_pages+0x2ca/0x3e0
[  +0.000004]  ? __pfx_blkdev_get_block+0x10/0x10
[  +0.000003]  ? __pfx_block_write_full_folio+0x10/0x10
[  +0.000017]  blkdev_writepages+0x57/0x90
[  +0.000004]  do_writepages+0x72/0x1c0
[  +0.000002]  ? fprop_fraction_percpu+0x34/0x80
[  +0.000005]  __writeback_single_inode+0x44/0x290
[  +0.000004]  ? inode_to_bdi+0x38/0x50
[  +0.000003]  writeback_sb_inodes+0x239/0x540
[  +0.000006]  __writeback_inodes_wb+0x54/0xf0
[  +0.000003]  ? queue_io+0x104/0x110
[  +0.000003]  wb_writeback+0x1a9/0x330
[  +0.000004]  wb_workfn+0x2d3/0x420
[  +0.000002]  ? try_to_wake_up+0x81/0x5b0
[  +0.000004]  process_one_work+0x188/0x3c0
[  +0.000003]  worker_thread+0x32f/0x4e0
[  +0.000003]  ? __pfx_worker_thread+0x10/0x10
[  +0.000001]  kthread+0xef/0x120
[  +0.000003]  ? __pfx_kthread+0x10/0x10
[  +0.000003]  ret_from_fork+0xc3/0xf0
[  +0.000002]  ? __pfx_kthread+0x10/0x10
[  +0.000002]  ret_from_fork_asm+0x1a/0x30
[  +0.000004]  </TASK>
[  +0.000032] task:pool-udisksd    state:D stack:0     pid:56176 tgid:1533  ppid:1      flags:0x00004002
[  +0.000004] Call Trace:
[  +0.000001]  <TASK>
[  +0.000001]  __schedule+0x2dc/0x610
[  +0.000004]  schedule+0x33/0xc0
[  +0.000002]  io_schedule+0x46/0x80
[  +0.000002]  blk_mq_get_tag+0x117/0x2a0
[  +0.000002]  ? __pfx_autoremove_wake_function+0x10/0x10
[  +0.000004]  __blk_mq_alloc_requests+0x1bb/0x500
[  +0.000003]  blk_mq_submit_bio+0x1a5/0x690
[  +0.000003]  ? enqueue_hrtimer+0x3c/0x90
[  +0.000004]  __submit_bio+0x96/0x180
[  +0.000003]  submit_bio_noacct_nocheck+0x164/0x230
[  +0.000003]  submit_bio_noacct+0x1ab/0x400
[  +0.000003]  submit_bio+0x34/0x90
[  +0.000002]  submit_bh_wbc+0x149/0x170
[  +0.000003]  __block_write_full_folio+0x1ec/0x410
[  +0.000003]  ? __pfx_blkdev_get_block+0x10/0x10
[  +0.000019]  ? __pfx_blkdev_get_block+0x10/0x10
[  +0.000003]  block_write_full_folio+0xa2/0xd0
[  +0.000003]  write_cache_pages+0x11a/0x3e0
[  +0.000018]  ? __pfx_blkdev_get_block+0x10/0x10
[  +0.000002]  ? __pfx_block_write_full_folio+0x10/0x10
[  +0.000006]  blkdev_writepages+0x57/0x90
[  +0.000004]  do_writepages+0x72/0x1c0
[  +0.000002]  ? _raw_spin_lock_irqsave+0xe/0x20
[  +0.000003]  filemap_fdatawrite_wbc+0x6a/0x90
[  +0.000003]  __filemap_fdatawrite_range+0x58/0x80
[  +0.000004]  filemap_flush+0x1c/0x30
[  +0.000002]  sync_blockdev_nowait+0x1b/0x30
[  +0.000003]  sync_filesystem+0x60/0xb0
[  +0.000002]  generic_shutdown_super+0x29/0x170
[  +0.000003]  kill_block_super+0x1b/0x40
[  +0.000002]  deactivate_locked_super+0x32/0xb0
[  +0.000003]  deactivate_super+0x40/0x50
[  +0.000002]  cleanup_mnt+0xc6/0x160
[  +0.000003]  __cleanup_mnt+0x12/0x20
[  +0.000002]  task_work_run+0x5e/0x90
[  +0.000003]  exit_to_user_mode_loop+0xf8/0x120
[  +0.000003]  do_syscall_64+0x117/0x130
[  +0.000003]  entry_SYSCALL_64_after_hwframe+0x76/0xe0
[  +0.000004] RIP: 0033:0x7eb1c976abbb
[  +0.000029] RSP: 002b:00007eb1c37fd4b8 EFLAGS: 00000246 ORIG_RAX: 00000000000000a6
[  +0.000003] RAX: 0000000000000000 RBX: 00007eb1b40098c0 RCX: 00007eb1c976abbb
[  +0.000001] RDX: 0000000000000000 RSI: 0000000000000000 RDI: 00007eb1b400e390
[  +0.000002] RBP: 00007eb1c37fd500 R08: 00007eb1b4000090 R09: 0000000000000040
[  +0.000001] R10: 0000000000000000 R11: 0000000000000246 R12: 00007eb1c37fd6d0
[  +0.000028] R13: 00007eb1b8002610 R14: 0000000000000000 R15: 0000000000000000
[  +0.000003]  </TASK>
[  +0.000153] task:kworker/u18:1   state:D stack:0     pid:52287 tgid:52287 ppid:2      flags:0x00004000
[  +0.000004] Workqueue: i915_flip intel_atomic_commit_work [i915]
[  +0.000197] Call Trace:
[  +0.000001]  <TASK>
[  +0.000002]  __schedule+0x2dc/0x610
[  +0.000003]  schedule+0x33/0xc0
[  +0.000003]  intel_atomic_commit_fence_wait+0xb0/0x140 [i915]
[  +0.000143]  ? __pfx_autoremove_wake_function+0x10/0x10
[  +0.000003]  ? __pfx_autoremove_wake_function+0x10/0x10
[  +0.000003]  intel_atomic_commit_tail+0x49/0x7f0 [i915]
[  +0.000140]  ? save_fpregs_to_fpstate+0x1b/0x60
[  +0.000005]  intel_atomic_commit_work+0x12/0x20 [i915]
[  +0.000224]  process_one_work+0x188/0x3c0
[  +0.000002]  worker_thread+0x32f/0x4e0
[  +0.000003]  ? __pfx_worker_thread+0x10/0x10
[  +0.000002]  kthread+0xef/0x120
[  +0.000003]  ? __pfx_kthread+0x10/0x10
[  +0.000003]  ret_from_fork+0xc3/0xf0
[  +0.000001]  ? __pfx_kthread+0x10/0x10
[  +0.000003]  ret_from_fork_asm+0x1a/0x30
[  +0.000004]  </TASK>
[  +0.000005] task:hwinfo          state:D stack:0     pid:56359 tgid:56359 ppid:36932  flags:0x00000002
[  +0.000003] Call Trace:
[  +0.000001]  <TASK>
[  +0.000001]  __schedule+0x2dc/0x610
[  +0.000004]  schedule+0x33/0xc0
[  +0.000002]  schedule_timeout+0x14b/0x160
[  +0.000004]  wait_for_completion+0x88/0x180
[  +0.000003]  __flush_work+0x72/0xc0
[  +0.000003]  ? __pfx_wq_barrier_func+0x10/0x10
[  +0.000003]  cancel_delayed_work_sync+0x67/0x80
[  +0.000003]  disk_block_events+0x7c/0x80
[  +0.000002]  blkdev_get_by_dev.part.0+0x12d/0x320
[  +0.000004]  bdev_open_by_dev+0xa3/0xc0
[  +0.000003]  ? __pfx_blkdev_open+0x10/0x10
[  +0.000002]  blkdev_open+0x3e/0xa0
[  +0.000003]  do_dentry_open+0x1ff/0x510
[  +0.000004]  vfs_open+0x2d/0x40
[  +0.000002]  do_open+0x2c0/0x440
[  +0.000003]  path_openat+0x12d/0x2c0
[  +0.000004]  do_filp_open+0xaf/0x160
[  +0.000005]  do_sys_openat2+0xb3/0x120
[  +0.000003]  __x64_sys_openat+0x6c/0xa0
[  +0.000002]  x64_sys_call+0x199f/0x1f20
[  +0.000002]  do_syscall_64+0x4c/0x130
[  +0.000003]  entry_SYSCALL_64_after_hwframe+0x76/0xe0
[  +0.000025] RIP: 0033:0x774ee29de615
[  +0.000018] RSP: 002b:00007ffdc9b809f0 EFLAGS: 00000202 ORIG_RAX: 0000000000000101
[  +0.000002] RAX: ffffffffffffffda RBX: 0000000000000800 RCX: 0000774ee29de615
[  +0.000002] RDX: 0000000000000800 RSI: 0000565fe145c600 RDI: 00000000ffffff9c
[  +0.000002] RBP: 0000565fe145c600 R08: 0000565fe1177010 R09: 0000000000000007
[  +0.000001] R10: 0000000000000000 R11: 0000000000000202 R12: 00007ffdc9b80ae8
[  +0.000001] R13: 00007ffdc9b80ae4 R14: 00007ffdc9b80b70 R15: 0000565fe11772a0
[  +0.000003]  </TASK>

可以观察到与 hwinfo 命令有关,查看是谁在调用 hwinfo:

csis@csis-pc:~$ ps -ef | grep '[h]winfo'
root       71766   36932  1 16:28 ?        00:00:00 hwinfo --disk
csis@csis-pc:~$ ps -fp 36932
UID          PID    PPID  C STIME TTY          TIME CMD
root       36932       1  0 16:05 ?        00:00:00 /usr/bin/python3 /usr/bin/kylin-assistant-systemdaemon.py
csis@csis-pc:~$ pstree -aps 71766
systemd,1 splash
  └─kylin-assistant,36932 /usr/bin/kylin-assistant-systemdaemon.py
      └─hwinfo,71766 --disk
csis@csis-pc:~$ ps -o pid,ppid,user,stat,wchan:32,cmd -p 71766,36932
    PID    PPID USER     STAT WCHAN                            CMD
  36932       1 root     Sl   -                                /usr/bin/python3 /usr/bin/kylin-assistant-systemdaemon.py
  71766   36932 root     D    -                                hwinfo --disk

是麒麟官方的 Python 脚本在调用 hwinfo,进一步筛选:

csis@csis-pc:~$ sudo grep -RniE 'loadInfoFromHwinfo|--disk' /usr/lib/python3/dist-packages/kylin-assistant-daemon 2>/dev/null
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kamonitorthread.py:52:        hwinfoList = self.cmdTool.loadInfoFromHwinfo("--monitor")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/networkadaptorthread.py:84:        adaptorList = self.cmdTool.loadInfoFromHwinfo("--network")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/networkadaptorthread.py:120:                        usbNetList = self.cmdTool.loadInfoFromHwinfo("--usb")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/networkadaptorthread.py:138:                        usbNetList = self.cmdTool.loadInfoFromHwinfo("--usb")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/networkadaptorthread.py:169:                    hwinfoList = self.cmdTool.loadInfoFromHwinfo("--network")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kacmdtool.py:154:    def loadInfoFromHwinfo(self, param):
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kacmdtool.py:921:    # diskList = cc.loadInfoFromHwinfo("--disk")
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kacamerainfo.py:47:        hwinfoList = self.cmdTool.loadInfoFromHwinfo("--usb")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kakeyboardinfo.py:47:        hwinfoList = self.cmdTool.loadInfoFromHwinfo("--keyboard")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kaharddiskinfo.py:130:        diskList = self.cmdTool.loadInfoFromHwinfo("--disk")
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kamouseinfo.py:54:            hwinfoList = self.cmdTool.loadInfoFromHwinfo("--mouse")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kagraphicscardinfo.py:101:        cardList = self.cmdTool.loadInfoFromHwinfo("--display")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kabluetoothinfo.py:48:        hwinfoList = self.cmdTool.loadInfoFromHwinfo("--usb")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kabluetoothinfo.py:49:        bThwinfoList = self.cmdTool.loadInfoFromHwinfo("--bluetooth")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/audioadaptorthread.py:193:            adaptorList = self.cmdTool.loadInfoFromHwinfo("--sound")["list"]
/usr/lib/python3/dist-packages/kylin-assistant-daemon/sessiondaemon/kacmdtool.py:83:    def loadInfoFromHwinfo(self, param):
/usr/lib/python3/dist-packages/kylin-assistant-daemon/sessiondaemon/kacmdtool.py:713:    # diskList = cc.loadInfoFromHwinfo("--disk")

可见 hwinfo 的硬盘相关调用在 /usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kaharddiskinfo.py 的第 130 行。

处理

可以使用 sudo apt remove hwinfo 直接卸载掉 hwinfo,或者使用 sudo sed -i '130s/^/#/' /usr/lib/python3/dist-packages/kylin-assistant-daemon/systemdaemon/kaharddiskinfo.py 注释掉 hwinfo 调用。


评论