Вопрос или проблема
Я использую Ubuntu 24.04, и я больше не могу копировать файлы с одного диска ZFS на другой. Большой файл копируется (или перемещается) только частично, после чего возникает ошибка «сращение файла не удалось» или что-то в этом роде, и копирование прерывается. В логе dmesg я вижу следующую ситуацию:
[ 141.501337] UBSAN: выход за границы сдвига в /build/linux-uoESLx/linux-6.8.0/fs/ufs/super.c:1247:19
[ 141.501338] Элемент сдвига 36 слишком велик для 32-битного типа 'int'
[ 141.501340] CPU: 14 PID: 4255 Команда: mount Заменено: P O 6.8.0-49-generic #49-Ubuntu
[ 141.501342] Название оборудования: Gigabyte Technology Co., Ltd. Z390 AORUS PRO/Z390 AORUS PRO-CF, BIOS F12g GA9 06/08/2020
[ 141.501343] Трассировка вызовов:
[ 141.501344] <ЗАДАЧА>
[ 141.501345] dump_stack_lvl+0x76/0xa0
[ 141.501349] dump_stack+0x10/0x20
[ 141.501350] __ubsan_handle_shift_out_of_bounds+0x199/0x370
[ 141.501354] ufs_fill_super.cold+0x16/0x1b7 [ufs]
[ 141.501359] ? sb_set_blocksize+0x1d/0x70
[ 141.501362] ? __pfx_ufs_fill_super+0x10/0x10 [ufs]
[ 141.501366] mount_bdev+0xf3/0x140
[ 141.501370] ufs_mount+0x15/0x30 [ufs]
[ 141.501374] legacy_get_tree+0x28/0x60
[ 141.501376] vfs_get_tree+0x27/0x100
[ 141.501377] do_new_mount+0x1a0/0x340
[ 141.501380] path_mount+0x1e0/0x830
[ 141.501382] ? putname+0x5b/0x80
[ 141.501384] __x64_sys_mount+0x127/0x160
[ 141.501386] x64_sys_call+0x1df5/0x25c0
[ 141.501388] do_syscall_64+0x7f/0x180
[ 141.501392] ? nvme_pci_complete_batch+0xb5/0xe0 [nvme]
[ 141.501396] ? nvme_irq+0x73/0x80 [nvme]
[ 141.501400] ? __pfx_nvme_pci_complete_batch+0x10/0x10 [nvme]
[ 141.501403] ? handle_irq_event+0x52/0x80
[ 141.501406] ? irqentry_exit_to_user_mode+0x7b/0x260
[ 141.501407] ? clear_bhb_loop+0x15/0x70
[ 141.501409] ? clear_bhb_loop+0x15/0x70
[ 141.501410] ? clear_bhb_loop+0x15/0x70
[ 141.501412] entry_SYSCALL_64_after_hwframe+0x78/0x80
[ 141.501413] RIP: 0033:0x7d9f62b2af0e
[ 141.501428] Код: 48 8b 0d 0d 7f 0d 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d da 7e 0d 00 f7 d8 64 89 01 48
[ 141.501429] RSP: 002b:00007ffde83c8828 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5
[ 141.501431] RAX: ffffffffffffffda RBX: 00006393c1406be0 RCX: 00007d9f62b2af0e
[ 141.501432] RDX: 00006393c1407070 RSI: 00006393c14070b0 RDI: 00006393c1407090
[ 141.501433] RBP: 00007ffde83c8890 R08: 00006393c1407e30 R09: 0000000000000007
[ 141.501433] R10: 0000000000000001 R11: 0000000000000246 R12: 00006393c1407090
[ 141.501434] R13: 00006393c14070b0 R14: 00006393c1407070 R15: 00006393c1406d40
[ 141.501436] </ЗАДАЧА>
[ 141.501436] ---[ конец трассировки ]---
[ 1548.597550] pool-thunar[4643]: сегментационная ошибка по адресу 28 ip 00007f30e31322fb sp 00007f30defff928 ошибка 6 в libglib-2.0.so.0.8000.0[7f30e309a000+a0000] вероятно на CPU 13 (ядро 5, сокет 0)
[ 1548.597592] Код: 75 c5 44 89 33 eb c0 0f 1f 84 00 00 00 00 00 5b 41 5c 41 5d 41 5e 5d c3 0f 1f 80 00 00 00 00 f3 0f 1e fa 31 c0 ba 01 00 00 00 <f0> 0f b1 17 75 01 c3 e9 79 ff ff ff 66 0f 1f 84 00 00 00 00 00 55
[ 7243.227599] pool-thunar[12876]: сегментационная ошибка по адресу 28 ip 00007cde77a902fb sp 00007cde61fff928 ошибка 6 в libglib-2.0.so.0.8000.0[7cde779f8000+a0000] вероятно на CPU 13 (ядро 5, сокет 0)
[ 7243.227640] Код: 75 c5 44 89 33 eb c0 0f 1f 84 00 00 00 00 00 5b 41 5c 41 5d 41 5e 5d c3 0f 1f 80 00 00 00 00 f3 0f 1e fa 31 c0 ba 01 00 00 00 <f0> 0f b1 17 75 01 c3 e9 79 ff ff ff 66 0f 1f 84 00 00 00 00 00 55
Что происходит? Как я могу это исправить?
Ответ или решение
Анализ проблемы и решение ошибки "shift-out-of-bounds" в Ubuntu 24.04
Ваша проблема связана с ошибкой, возникающей в результате переполнения при выполнении операций с файловой системой. Сообщение об ошибке "UBSAN: shift-out-of-bounds" указывает на то, что происходит попытка выполнить операцию сдвига на 36 бит, что превышает допустимые пределы для 32-битного целого типа. Эта ошибка зафиксирована в файле /build/linux-uoESLx/linux-6.8.0/fs/ufs/super.c
и делает вашу систему нестабильной, что, в свою очередь, затрудняет копирование файлов с одного диска ZFS на другой.
Причины
- Ошибки в коде ядра: Переполнение происходит из-за неправильных расчетов в коде универсальной файловой системы (UFS), что может быть вызвано ошибкой разработчиков в версиях ядра Linux, которые вы используете.
- Системные библиотеки: Сообщения о сегментации в
libglib-2.0
могут указывать на проблемы в библиотеке, используемой для работы с графическим интерфейсом, что также может привести к сбоям при работе с файловыми операциями. - Конфликты с настройками файловой системы: Возможны проблемы совместимости между ZFS и используемым вами окружением.
Шаги по устранению проблемы
-
Обновление ядра и системных библиотек:
- Проверьте наличие обновлений для ядра Linux. Возможно, были выпущены заплатки, исправляющие описанные проблемы. Выполните команду:
sudo apt update && sudo apt upgrade
- Также убедитесь, что все зависимости системы и библиотеки обновлены.
- Проверьте наличие обновлений для ядра Linux. Возможно, были выпущены заплатки, исправляющие описанные проблемы. Выполните команду:
-
Проверка файловой системы:
- Проверьте состояние файловой системы ZFS на ошибки. Вы можете использовать команду:
sudo zpool scrub название_пула
- Проверьте состояние файловой системы ZFS на ошибки. Вы можете использовать команду:
-
Переустановка или обновление
libglib-2.0
:- Попробуйте переустановить библиотеку:
sudo apt install --reinstall libglib2.0-0
- Это может помочь исправить проблему с сегментацией и обеспечить стабильную работу приложения, использующего эту библиотеку.
- Попробуйте переустановить библиотеку:
-
Использование альтернативных файловых менеджеров:
- Если проблема продолжает возникать в Thunar, попробуйте использовать другой файловый менеджер, такой как Nautilus или Dolphin, для выполнения операций копирования.
-
Сообщение об ошибках:
- Если проблема не решена, рекомендуется сообщить об этом через специализированные форумы или в систему отслеживания ошибок для вашей версии Ubuntu. Укажите подробную информацию о вашей системе и воспроизводимости проблемы.
-
Виртуальная машина или Live CD:
- Если проблема критична и влияет на рабочий процесс, рассмотрите возможность использования виртуальной машины или Live CD для выполнения необходимых файловых операций.
Заключение
Вышеуказанные рекомендации должны помочь вам устранить проблему с ошибкой "shift-out-of-bounds" и восстановить работоспособность системы при копировании файлов. Следуя инструкциям, вы сможете устранить текущие неполадки и обеспечить надежную работу вашего окружения в Ubuntu 24.04. Если проблема сохраняется или возникают новые ошибки, рассмотрите консультацию с техническими специалистами или технической поддержкой вашего дистрибутива.