LINUX.ORG.RU

Избранные сообщения c0unt0

Как отладить зависание ядра?

Форум — General

Обновился на Lubuntu 22.04.2 с 20.04.6.
Стало виснуть всё колом, часто. Как правило в простое, но бывает и прямо ведёшь мышку - она медленнее, медленнее, и всё.
Бывает успеваешь язык переключить (пропадает Scroll lock подсветка). Или в консоль по ctrl+alt+F1 (тоже пропадает, но консоль не отрисовывается).
Грешу на видюху RX5700 XT. Менял дрова с amdgpu на с оффсайта - не помогло. Пробовал выключать виртуалки (virtualbox) - не помогло.
Не запускать Хром - не помогло.
Запускать браузеры c --disable-gpu (в самом начале, т.к. с включенной вешались вообще быстро при просмотре видео, минут 5-10, и опять вотбл***!!!).
Алсо, в SMPlayer тоже сделал отрисовку через X11 - перестал вешаться.
Вис Xscreensaver при запуске или длительном простое, даже с blank screen - удалил.
Есть ещё Телеграмм, сейчас ему ускорение выключил.
Самый прикол, что в играх зависаний нет, в Doom Eternal можно бегать часами. Только в Иксах (wayland удалил сразу же, pipewire чуть позже, на него тоже думал).
Окружение - LXDE.
Ядра менял от 4го до 6.5 (сейчас стоит).
Opera вернул на старую версию - 88 (Opera One хочет композитинг, пока не вышла версия, которая отключает тени, если его нет и они рисуются чёрными квадратами. Хотя Хром уже так умеет).
Что случилось с линуксом? Какие ещё инновации в него внесли, что всё вешается?
В логах нет нифига, как будто такой клин, что даже записаться ничего не успевает.
Температуры в норме, вентиляторы все крутятся.

sudo inxi -G
Graphics:
  Device-1: AMD Navi 10 [Radeon RX 5600 OEM/5600 XT / 5700/5700 XT]
    driver: amdgpu v: kernel
  Display: server: X.Org v: 1.21.1.4 driver: X: loaded: amdgpu,ati
    unloaded: fbdev,modesetting,radeon,vesa gpu: amdgpu
    resolution: 1920x1080~60Hz
  OpenGL: renderer: AMD Radeon RX 5700 XT (NAVI10 DRM 3.54.0
    6.5.0-26-generic LLVM 9.0.0)
    v: 4.5 Mesa 19.3.4

Как такое отлаживать?

 , , , ,

c0unt0
()

[РЕШЕНО] Редактор с поддержкой выделения соответствующих if-fi , do-done и т.п. для bash

Форум — Development

Тут один проект так разросся, что несмотря на форматирование при вставке куска кода произошла ошибка, и fi оказался не там. Выловил, но пришлось использовать geany для сворачивания кода. Сразу говорю - я админ, и кодить люблю как собака палку. Но пришлось. «За неимением королев» как говорится…

Так вот. Я вспомнил юные годы, Delphi, C++, так где-то там я видел что встаёшь на скобку, а тебе соответствующая подсвечивается. Как это по-англицки не знаю, гугль не помогает. Коллеги говорят vscode, я говорю - н***й поделки Микрософт. Говорят Atom - он не разрабатывается (спасибо Микрософту, купившему гитхаб).

Всё что смог накопать - был когда-то плагин для gedit-a, но возможно для 2го, потому что то что скачал и положил текущий не увидел.

А ещё emacs-gtk. Он выделяет. И даже иногда по комбинации клавиш переходит на next-prev. Но крайне редко. И выделяет «в зоне видимости». А если встал на if 2мя страницами выше, то всё… Ну и у него своё поведение долбанутое, но с этим как-то можно матерясь смириться, или поотключать где со временем. Главное чтобы показывал что чему соответствует.

Господа практикующие программисты. Есть чего-то open-source с такими функциями? Ибо не для того я переходил на линукс в своё время, чтобы мелко-мягкий софт юзать.

================

Подошёл bluefish:

[РЕШЕНО] Редактор с поддержкой выделения соответствующих if-fi , do-done и т.п. для bash (комментарий)

 , , , ,

c0unt0
()

WIne запустить приложение от LocalSystem

Форум — Desktop

Столкнулся с одной проблемкой: Служба проверяет, что она запущена от системной учётной записи, и если это не так - не работает. Пробовал и утилиту от Nirsoft, и ProcessHacker, runassystem, powerrun, и т.д. Но добился только что ProcessHacker пишет

fixme:advapi:LsaEnumerateAccounts (000000000000CAFE,000000000011D370,000000000011D2F8,256,000000000011D368) stub
:fixme:service:QueryServiceConfig2W Level 3 not implemented
02b4:fixme:service:QueryServiceConfig2W Level 8 not implemented
02b4:fixme:service:QueryServiceConfig2W Level 8 not implemented
:fixme:sync:NtConnectPort (0x14015f1c0,L"\\BaseNamedObjects\\ProcessHackerDTGSOHCDONXFINV",0x11ce40,0x11ce68,0x11ce50,0x11ced8,0x11ced0,0x11cec8),stub!
02b4:fixme:eventlog:ControlTraceW (cafe4242, (null), 00000000033B3B80, 3) stub
02a0:fixme:sync:NtConnectPort (0x14015f1c0,L"\\BaseNamedObjects\\ProcessHackerDTGSOHCDONXFINV",0x11ce40,0x11ce68,0x11ce50,0x11ced8,0x11ced0,0x11cec8),stub!
02a0:fixme:sync:NtConnectPort (0x14015f1c0,L"\\BaseNamedObjects\\ProcessHackerDTGSOHCDONXFINV",0x11ce40,0x11ce68,0x11ce50,0x11ced8,0x11ced0,0x11cec8),stub!

А runassystem:

0800:fixme:security:ImpersonateLoggedOnUser (0000000000000060)
0800:fixme:advapi:CreateProcessWithTokenW 0000000000000060 0x00000000 L"C:\\windows\\system32\\cmd.exe" L"\"C:\\windows\\system32\\cmd.exe\"" 0x00008000 0000000000000000 L"Z:\\media\\data\\1.my" 000000000011ED20 000000000011ED00 - semi-stub

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

AdvancedRun (в вайн не запускается), если запускать на винде, пишет ошибку 1063 (0x427), которая обозначает ERROR_FAILED_SERVICE_CONTROLLER_CONNECT The service process could not connect to the service controller. Т.е. запускать нужно именно как службу, что ограничивает манёвр для отладки.

Стал гуглить - варианты мульти-юзерства только с выносом .wineprefix в /etc/ или шару, копированием каждому реестра, сознанием симлинков и прочая веселуха. В-принципе для 1й программы такое сделать можно, реестры не разбегутся со временем.

Но, может быть есть более элегантное решение? Есть способ заставить программу думать, что она запущена от LocalSystem?

P.S. Пробовал менять Environment -

export COMPUTERNAME=TEST; export USER="NT AUTHORITY\SYSTEM" ;export  USERNAME="NT AUTHORITY\SYSTEM" ; export LOGNAME="NT AUTHORITY\SYSTEM" ; export USERPROFILE=C:\Windows\system32\config\systemprofile ; wine regedit

Не помогло. Хотя у всех программ и служб username и wineusername меняется на SYSTEM. ProcessHacker показывает в колонке username Real_pc_name\real_user_name Видимо так просто эту проверку не обойти. При поиске по string-ам в библиотеках и программе нашёл только LookupAccountSidW и LookupAccountNameW . Своё ПО для проверки писать что ли? Дак ProcessHacker и не обманывается. Если кто знает, где пропатчить вайн, чтобы UID, GID и username поменять на SYSTEM - пишите, вариант тоже рассматривается.

 ,

c0unt0
()

Насильно вгрузить модуль от другой версии ядра.

Форум — General

Жил-был один иностранный разработчик. И написал он модуль по работе с сетью для Американской ОС. Очень этот модуль приглянулся КГБ. Они похитили американца, но разговорить не успели - выпил капсулу с Новичком. И где исходники лежат, узнать теперь не получится. Казалось бы - да фиг то с ним, нужное ядро подобрать не проблема, но только отбрасывает оно систему в прошлое. И прибивает к нему гвоздями. Попробовали доблестные разведчики modprobe –force, но на поверку оказалось что он делает обычный insmod. А тот ключа force не знает. И вместо ошибки «Invalid module format» выдаёт «Exec format error». Яндексение выдало что существуют какие-то таблицы символов, в которых прописаны адреса входа в функции ядра, и ежели не совпадут они с модулевскими, наступит хаос и враги победят. Однако есть шанс, что адреса-таки совпадут, либо поправить их можно hex-редактором, вместе с контрольными суммами, если это потребуется. Но модуль нужно любой ценой вгрузить в пространство ядерное, хоть с перфокарт, хоть пересборкой insmod-a, хоть правкой vermagic. Если не получится - то весь отдел расстреляют из пулемёта. Для простоты, версия ядра отличается 3й цифрой и далеко не убежала. Как такое реализовать?

 , ,

c0unt0
()