LINUX.ORG.RU

Странные фейлы с загрузкой библиотек

 , , , ,


0

2

Камрады, приветствую!

Закопался с проблемой.

Есть платформа Khadas VIM3 со сборкой на основе Ubuntu 20.04 и ядром 4.19.241. По MIPI-CSI2 туда подключается камера. Есть приложение, которое читает камеру, жмёт кадры и делает прочую полезную работу. Работает под RT приоритетом (для этого есть причины), активно используется OpenMP, камеру читаем через V4L2 IOCTL интерфейс. Запуск OpenMP ограничен доменами на производительных ядрах (4 штуки из 6). BusyLoop в приложении нет.

Корневая файловая система на eMMC, EXT4 в режиме writeback, т.е. без журнала.

Так вот, при каких-то стечениях обстоятельств после загрузки после запуска этого приложения некоторые приложения не стартуют с ошибками чтения/загрузки библиотек:

error while loading shared libraries: XXX: unsupported version 0 of Verneed record

error while loading shared libraries: XXX: invalid ELF header

при каждой загрузке библиотека XXX может отличаться, как отличаться и конкретное сообщение об ошибке.

Причём, это может повторяться N раз подряд, а на N+1 загрузку стартанёт нормально и потом может стартовать удачно несколько раз к ряду.

Иногда в серии неудачных загрузок выключить наше приложения и стартануть его уже после всех, то всё стартует и работает нормально. Если же уже всё стало плохо, то ничего не восстановится.

eMMC проверял, вроде, здоровая:

% sudo mmc extcsd read /dev/mmcblk0 | grep 'LIFE\|EOL'
eMMC Life Time Estimation A [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_A]: 0x01
eMMC Life Time Estimation B [EXT_CSD_DEVICE_LIFE_TIME_EST_TYP_B]: 0x01
eMMC Pre EOL information [EXT_CSD_PRE_EOL_INFO]: 0x01

У меня мозг сломался, что может приводить к такому поведению, как приложение в пользовательском пространстве может поломать в системе что-то лихо так, что потом другие приложения это аффектит.

Однозначно есть какая-то гонка. Но где. В ядре?

Находил схожую проблему, но там был косяк с SquashFS на 6.0 ядрах. Баг в EXT4/драйвере eMMC контроллера?

В общем, если у есть какие-то идеи - велкам!

★★★

Работает под RT приоритетом

Может он перебивает чтение файла. Соответственно, если файл уже в памяти, то всё хорошо, если нет, то ошибка чтения.

monk ★★★★★
()
Ответ на: комментарий от hateyoufeel

@hateyoufeel,

Есть вариант туда strace закинуть?

Там на этапе загрузчика ELF валится, в стрейс ничего не будет. Я, вроде, даже делал, безрезультатно. Но, раз есть сомнения, как только опять воспроизведётся - проверю.

@monk,

Может он перебивает чтение файла.

Я вот не могу представить себе механизмы этого. Ведь фейл где-то на этапе работы изначального загрузчика ld.so. Та же библиотека, на которую ругается вполне себе открывается банальным mcview.

hatred ★★★
() автор топика