-
- Проблема в том, что в скрипте много подобных строк, а выполняется
только первая и на этом всё. Можно, конечно, убивать процессы для
каждой отдельной команды, но хотелось бы найти причину. - Tech_(13.10.2020 13:13)
- Может strace что-нибудь полезное выдаст. Скорее всего проблема в
драйвере, который выш вызов должен обрабатывать. - s_h_e(13.10.2020 13:27)
- При таком вызове: Tech_(1037 знак., 14.10.2020 04:59)
- напиши приложение и печатай errno после попытки записи. Дoктyp77(119 знак., 14.10.2020 08:12, )
- Что-то я не готов с ходу написать приложение которое будет
цепляться к процессу и перехватывать код ошибки вызываемой функции.
А завершение по Ctl+C возвращает, стандартно, 130. Или есть путь
проще? - Tech_(14.10.2020 10:31)
- Зачем такие сложности? достаточно fprintf вместо echo - Дoктyp77(14.10.2020 10:48, )
- Что-то я не готов с ходу написать приложение которое будет
цепляться к процессу и перехватывать код ошибки вызываемой функции.
А завершение по Ctl+C возвращает, стандартно, 130. Или есть путь
проще? - Tech_(14.10.2020 10:31)
- напиши приложение и печатай errno после попытки записи. Дoктyp77(119 знак., 14.10.2020 08:12, )
- Блин, скрипт зацикливается на выполнении этой строки. Tech_(75 знак., 13.10.2020 13:35)
- Приаттачся (gdb -p <PID>) к процессу скрипта и посмотри
чем он занят (backtrace). - fk0(14.10.2020 11:05)
- Вот что получил: Tech_(1002 знак., 14.10.2020 12:17)
- Повтори и дай команду bt. Потомпосмотри аргументы у write(). В
регистре R0 если ARM. Сделай lsof -p <PID> и посмотри что
за файл дескриптор. Впрочем я и так угадаю, что он в
/proc/куда-то-там пишет. Можешь в скрипте писать как "timeout 1
echo 'xxxx' > /proc/xxx || :" Только по-моему запись в proc не
работает вообще. Х.З. почему, по-моему какой-то затык в драйвере.
Он в ядре коллбэк вызвал и не вернулся. - fk0(14.10.2020 19:53)
- Ну и да, драйвер. Был amdgpu 20.40, поствил 20.20 и заработало. UBUNTU 20.04.01 - Tech_(15.10.2020 13:32)
- Это ПК на селероне, пишет туда, куда прошу: Tech_(1143 знак., 15.10.2020 12:44)
- Повтори и дай команду bt. Потомпосмотри аргументы у write(). В
регистре R0 если ARM. Сделай lsof -p <PID> и посмотри что
за файл дескриптор. Впрочем я и так угадаю, что он в
/proc/куда-то-там пишет. Можешь в скрипте писать как "timeout 1
echo 'xxxx' > /proc/xxx || :" Только по-моему запись в proc не
работает вообще. Х.З. почему, по-моему какой-то затык в драйвере.
Он в ядре коллбэк вызвал и не вернулся. - fk0(14.10.2020 19:53)
- Вот что получил: Tech_(1002 знак., 14.10.2020 12:17)
- Приаттачся (gdb -p <PID>) к процессу скрипта и посмотри
чем он занят (backtrace). - fk0(14.10.2020 11:05)
- +1 Дoктyp77(128 знак., 13.10.2020 13:34, )
- При таком вызове: Tech_(1037 знак., 14.10.2020 04:59)
- Что будет если под root выполнить ? Дoктyp77(20 знак., 13.10.2020 13:16, )
- Зависание консоли, никакие Ctl+C не помогают. - Tech_(13.10.2020 13:16)
- Т.е., если запускать скрипт то Ctl+C помогает, а если из командной строки, то зависает. - Tech_(13.10.2020 13:22)
- Зависание консоли, никакие Ctl+C не помогают. - Tech_(13.10.2020 13:16)
- Может strace что-нибудь полезное выдаст. Скорее всего проблема в
драйвере, который выш вызов должен обрабатывать. - s_h_e(13.10.2020 13:27)
- Проблема в том, что в скрипте много подобных строк, а выполняется
только первая и на этом всё. Можно, конечно, убивать процессы для
каждой отдельной команды, но хотелось бы найти причину. - Tech_(13.10.2020 13:13)