Bug 60926
| Summary: | gvfs-tests: test_mount_api (GPhoto) всегда падает: umockdev-фикстуры из эпохи libusb0 несовместимы с libusb1-портом libgphoto2 (≥ 2.5.28) | ||
|---|---|---|---|
| Product: | Sisyphus | Reporter: | Artem Varaksa <varaksaaa> |
| Component: | gvfs | Assignee: | Yuri N. Sedunov <aris> |
| Status: | NEW --- | QA Contact: | qa-sisyphus |
| Severity: | normal | ||
| Priority: | P5 | CC: | aris |
| Version: | unstable | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
| See Also: | https://bugzilla.altlinux.org/show_bug.cgi?id=44191 | ||

Description
Artem Varaksa 2026-10-12 19:07:41 MSKВо всех ветках (p10, p11, sisyphus), в пользовательском и root-режимах, стабильно: ``` FAIL: test_mount_api (__main__.GPhoto) gphoto2:// mount with Gio API ---------------------------------------------------------------------- Traceback (most recent call last): File "/usr/libexec/gvfs/installed-tests/gvfs/gvfs-test", line 1749, in test_mount_api self.assertEqual(self.mount_api(gfile_mount), True) AssertionError: GLib.Error('Error initializing camera: -7: I/O problem', 'g-io-error-quark', 0) != True ``` (номер строки зависит от версии gvfs: 1739 в 1.48.2, 1742 в 1.57.2, 1749 в 1.58.5/1.62.0) В логе демона gvfsd-gphoto2: ``` gphoto2: gphoto2_port='usb:001,015' gphoto2: send_reply(...), failed=1 (Error initializing camera: -7: I/O problem) ``` ## Причина - Тест эмулирует камеру Canon PowerShot через umockdev, используя фикстуры `test/files/powershot.umockdev` (добавлены в gvfs 1.18.0-alt1, 2013) и `test/files/powershot.ioctl` (gvfs 1.20.0-alt1, 2014). - Фикстуры записаны в эпоху старого libusb0-порта libgphoto2 и с тех пор не обновлялись: во всех проверяемых версиях файлы побайтово идентичны (md5 `5099fb4e1c0bd4997c471753ea04eed1` и `22552dd730b0bcfd6efc97f9f5fdd0a3`), и запись содержит **только bulk-PTP-обмен** (эндпоинты 0x02 OUT / 0x81 IN), interrupt-трафика в ней нет. - Начиная с gphoto2 2.5.28 (2022) libgphoto2 использует libusb1-порт, который при открытии порта **неусловно** отправляет асинхронный 256-байтовый interrupt URB, если в дескрипторе устройства объявлен interrupt-эндпоинт (у эмулируемого устройства объявлен EP 0x83). - Этот URB отсутствует в записи → воспроизведение umockdev не находит совпадения и возвращает ENOTTY на `USBDEVFS_SUBMITURB` → `GP_ERROR_IO (-7)` → монтирование не начинается. Ни один PTP-запрос до этого момента не отправляется (в логах демона после `gphoto2_port='usb:001,015'` PTP-трафика нет). Иными словами, тест неработоспособен с момента попадания libgphoto2 2.5.28 в дистрибутив; это известный с 2022 года сбой (баг 44191, sisyphus, gvfs 1.50.2-alt1) — воспроизводится без изменений и в 2026 на всех ветках. ## Предложение (любой из вариантов) 1. Перезаписать umockdev-фикстуры под текущий libusb1-порт libgphoto2 (нужна реальная PTP-over-USB-камера или её эмулятор), либо 2. Руками дополнить существующую запись отсутствующим interrupt URB (и прочим трафиком при открытии порта, если он есть), либо 3. Пропустить тест в spec gvfs для затронутых веток (test-only патч), пока фикстуры не будут обновлены. ## Шаги воспроизведения 1. Установить `gvfs-tests` (фикстуры самодостаточны, внешних сервисов не требуется) 2. Запустить `/usr/libexec/gvfs/installed-tests/gvfs/gvfs-test` 3. `test_mount_api (GPhoto)` падает с `Error initializing camera: -7: I/O problem` ## Версии - gvfs: p10 1.48.2-alt1, p11 1.57.2-alt1 (задание 435928: 1.58.5-alt1), sisyphus 1.62.0-alt1 - libgphoto2: p10 2.5.31-alt1, p11 2.5.33-alt0.p11.1, sisyphus 2.5.34-alt1 - libumockdev: p10 0.17.13-alt1, p11 0.19.3-alt1, sisyphus 0.19.9-alt1 - libusb: p10 1.0.26-alt2, p11 1.0.30-alt1, sisyphus 1.0.30-alt1