Почему удалили тему?
https://www.linux.org.ru/forum/general/17938729
Пользователя забанить - это одно, но в самой теме вроде нет никаких нарушений.
Чисто из любопытства интересуюсь.
https://www.linux.org.ru/forum/general/17938729
Пользователя забанить - это одно, но в самой теме вроде нет никаких нарушений.
Чисто из любопытства интересуюсь.
Что бы я туда не прописывал - визуально ничего не меняется. Есть идеи, почему это может быть так?
Версия 8.6.14_1.
Куприв!
Пишу я тут очередной ляс и в процессе компиляции компилятор и даже линковщик(!) выдаёт мне такие предупреждения:
cc -Wall -O2 -c -o sim7600-at.o sim7600-at.c
sim7600-at.c: In function 'simApplicationToolkit':
sim7600-at.c:1013:17: warning: implicit declaration of function 'gets'; did you mean 'fgets'? [-Wimplicit-function-declaration]
1013 | gets( userAns );
| ^~~~
| fgets
cc -s sim7600-at.o utils_pdu_sms.o -o sim7600-at
/usr/bin/ld: sim7600-at.o: in function `simApplicationToolkit':
sim7600-at.c:(.text+0xf91): warning: the `gets' function is dangerous and should not be used.
Справедливо, но тогда почему нет подобного предупреждения при использовани strncpy
, например, которая тоже дырявая, даже не смотря на n
?
В приложениях, которые используют gtk, есть одна особенность. Если навести мышь на полосу прокрутки, зажать левую кнопку мыши и подержать пару секунд, то при перетаскивании ползунка мышью он перетаскивается с отставанием от мыши. Таким образом не получится перетащить его до конца.
Смотрел документацию.
https://docs.gtk.org/gtk3/class.Settings.html#properties
https://docs.gtk.org/gtk4/class.Settings.html#properties
Но не нашёл там подходящих настроек.
Каким образом можно отключить такое поведение?
https://www.opennet.ru/opennews/art.shtml?num=62859
Высад. Придётся теперь косплеить терпилу на мозиле до тех пор, пока не появится адекватный браузер.
Вопрос в заголовке. Если да, то распишите подробности. В манах пишут про отрицательное значение при ошибке, но списка errno нет.
Вопрос снят. Судя по ответам в теме и поиску в сети, есть смысл избегать следующих функций в критически важном коде: printf()
, fprintf()
, dprintf()
, sprintf()
, snprintf()
, vprintf()
, vfprintf()
, vdprintf()
, vsprintf()
, vsnprintf()
. Эти функции имеют общую man-страницу printf(3) и в ней указано, что эти функции могут завершаться с ошибкой, но при этом не приводится списка возможных ошибок, поэтому невозможно предусмотреть ошибки заранее.
Сидел играл в погремушки. Наигрался. Закрыл игру и ушёл примерно на час, оставив комп включённым. Прихожу, патаюсь запустить браузер, а он не запускается. Пытаюсь вообще что-либо следать с клавиатуры - ничего не происходит. Вначале подумал, что зависла система, но курсор мыши двигается и на фоне хрустят блины - работает торрент. Перезагрукзка не помогла. Опытным путём выяснил, что клавиатура оглохла. Причём подсветка на ней работает, а сама клава даже в системе не видна.
Поделитесь опытом - у кого-нибудь вот так запросто умирали клавы?
Ситуация следующая. Запускается программа А, которая занимает какую-то часть памяти. Запускается программа Б, которой не хватает оставшейся свободной памяти, поэтому программа А отправляется в своп. После закрытия программы Б, программа А остаётся в свопе и из-за этого люто тормозит. Приходится делать swapoff -a
и swapon -a
чтоб вернуть прежнюю отзывчивость.
Вопрос: есть ли способы настроить поведение таким образом, чтоб при освобождении памяти система автоматически доставала данные из свопа не дожидаясь момента, когда они понадобятся?
Организовал я свой велопарсер текста c кодировкой UTF-8. Теперь я хочу его проверить. Существуют ли в природе «эталонные» строки, по которым можно протестировать парсер? В сети нашёл только это https://www.w3.org/2001/06/utf-8-wrong/UTF-8-test.html
Допустим, есть некий массив вида
{ data, data, NULL, data, data, NULL, data }
То есть это как бы обычный массив с данными, но в нём есть «дырки». Пытаюсь организовать доступ к этому массиву так, чтоб он был виден как массив без дырок
{ data, data, data, data, data }
Моих куриных мозгов пока хватило только на то, чтоб организовать «транслятор» - массив, который будет содержать в себе индексы ячеек с данными
{ 0, 1, 3, 4, 6 }
В сети ничего путного не моуй найти. Подскажите, как грамотно называются такие массивы? Также буду благодарен, если накидаете умных слов по теме для самообучения и литературу, где описываются методы работы с такими данными.
Под потоком подразумевается сокет, последовательный порт и т.д..
Есть куча протоколов общения, которые подразумевают общение строками, длина которых заранее не известна. Насколько я знаю, есть 2 подхода. Первый подход заключается в чтении по одному байту до тех пор, пока не встретится конец строки. Второй подход заключается в чтении какого-то произвольного числа байт в некий буфер и уже проход по буферу.
Первый вариант хорош своей простотой, но плох большим количеством вызовов read()/recv(). Второй вариант хорош тем, что число вызовов read()/recv() будет минимально, но плох тем, что можно вычитать более одной строки и тогда вокруг данных после конца строки начинается пляска с бубном.
Как вообще принято реализовывать подобные вещи?
У меня зачастую бывают такие ситуации, что я как осёл между двумя стогами сена стою и не могу для себя решить, что использовать в данном конкретном случае.
Напишите, чем вы руководствуетесь, когда решаете использовать дефайны или енумы.
P.S. Тема не имеет под собой какого-то конкретного случая. Просто хочу посмотреть на опыт других программистов.
Т.к. в сети информации толком нет (ну или я просто не умею её искать), то решил написать эту статью, чтоб исправить это.
Речь пойдёт про установку конкретно houdini. В сети есть скрипты для автоматической установки, которые нужно запускать от рута, но описания что конкретно они делают к ним нет, поэтому у меня не возникло к ним доверия и я решил разобраться что да как.
Многим играм и программам для андроид требуется архитектура arm для работы. Houdini — это набор библиотек-трансляторов, которые позволят запускать их на архитектуре x86 и x86_64. Эти библиотеки были взяты из образов андроид от майкрософт. Есть аналогичный набор библиотек NDK, которые были взяты из образов андроид от гугла.
В данном примере я буду использовать houdini для Android 11, который идёт в штатной поставке waydroid. Там используется образ Lineage OS, но сути это не изменит.
Для начала скачиваем сами библиотеки. Например, отсюда https://github.com/supremegamers/vendor_intel_proprietary_houdini В данном случае нас будет интересовать содержимое каталога prebuilts.
( читать дальше... )
Помню давно мелькали новости про свободный мобильник, у которога 2 модема: основной свободный 3g и второй проприетарный 4g. Там можно было отключать питание 4g модема. Не могу найти новость. Была достаточно давно 4+ лет назад.
Периодически сталкиваюсь с ситуациями, когда нужно вызвать некоторое количество функций, которые имеют одинаковый прототип и результат выполнения которых нужно контролировать. Чтоб не прописывать проверку после вызова каждой функции, решил сделать всё в цикле.
int sx1509_init( struct BicOS* os ){
int res;
int i;
const struct {
int (*function)( struct BicOS* );
const char* name;
} initSequence[] = {
{ gpioSetup, "GPIO setup" },
{ deviceSetup, "Device setup" },
{ interruptHandlerSetup, "Interrupt handler setup" },
{ interruptEventHandlerSetup, "Interrupt event handler setup" },
{ keyboardSetup, "Keyboard setup" },
{ debug_key_printer_register, "Deug key printer" },
{ NULL, NULL }
};
for( i = 0; initSequence[i].function; i++ ){
res = initSequence[i].function( os );
if( res ){
printf( "{B} [sx1509] %s failed.\n", initSequence[i].name );
return -1;
}
}
return 0;
}
На первый взгляд оверхед у такого небольшой. Может у меня глаз замылился и я в упор не вижу подвоха? Какие у вас будут мнения на этот счёт?
Гит снова выходит на связь:
$ git clone -b v5.3.1 --recursive https://github.com/espressif/esp-idf.git
Клонирование в «esp-idf»...
remote: Enumerating objects: 673982, done.
remote: Counting objects: 100% (9539/9539), done.
remote: Compressing objects: 100% (3825/3825), done.
error: RPC failed; curl 18 transfer closed with outstanding read data remaining
error: 7330 bytes of body are still expected
fetch-pack: unexpected disconnect while reading sideband packet
fatal: неожиданный конец файла
fatal: fetch-pack: invalid index-pack output
Пробовал все советы отсюда ничего не помогло: ошибка всё равно происходит, но немного позже. Есть ещё варианты?
Также пробовал скачать zip-архив и распаковать его, но в моём случае это не сработало, т.к. сама idf полагается на гит.
Дополнительный вопрос: есть ли drop-in замена гиту, в которой разработчики осилили докачку?
Опрос касается потребительского железа.
Опрос назрел в связи с тем, что один товарищ утверждает, что зависания каждый день - это нормально для потребительского железа.
********************************************************************************************************************************************************************************************************************************************************************************************************************************
****************************************************************************************************************************
**********************************************************************************************
*************************************************
********************
************
**********
Всего голосов: 623
Например, на tty1 запущены иксы и в них запущены различные программы. Если я переключусь на tty2, то эти программы через 5-10 секунд перестанут работать до тех пор, пока не переключусь обратно на tty1. Есть ли способ обойти это малой кровью без накатываний патчей на ядро?
В очередной раз я накатываю void на ssd на f2fs и в очередной раз я сталкиваюсь с ошибкой FLUSH_MERGE not compatible with readonly mode
.
В этот раз меня это выбесило основательно и я закатал рукава и начал искать, откуда лезет эта дичь. Начинаем по порядку. Если ручками монтировать фс командой вида mount /dev/sda1 /mnt/1
, то всё ок. Когда это делает initramfs, то не ок.
В сети нашёл информацию по прописыванию либо rw
либо noflush_merge
в командную строку ядра. Я решил пойти по пути прописывания rw
- не помогло.
Дальше я полез изучать устройство содержимого initramfs. Опции монтирования лежат в /etc/cmdline.d/95root-dev.conf
. Вот его содержимое в моём случае
root=UUID=e10bcf2f-f3de-4bb4-993c-dbb82afa09ad rootfstype=f2fs rootflags=rw,noatime,lazytime,background_gc=on,nogc_merge,discard,discard_unit=block,user_xattr,inline_xattr,acl,inline_data,inline_dentry,flush_merge,barrier,extent_cache,mode=adaptive,active_logs=6,alloc_mode=default,checkpoint_merge,fsync_mode=posix,memory=normal,errors=continue
Как видно, тут есть опция rw
, значит всё хорошо. Более того, если руками смонтировать раздел с этими опциями, то всё монтируется без проблем.
Дальше я решил сравнить эти опции с теми, которые используются фактически при монтировании. Оказалось, что в самом конце к ним добавляется ,rw,ro
и таким образом фс пытается смонтироваться в режиме только чтения! И это вызывает ошибку.
Я полез искать по скриптам место, где отрабатывает вот это вот всё и нашёл файл /usr/lib/dracut/hooks/mount/99-mount-root.sh
. Практически в самом начале есть такой участок кода
_rflags_ro="$rflags,ro"
_rflags_ro="${_rflags_ro##,}"
while ! mount -t "${rootfs}" -o "$_rflags_ro" "${root#block:}" "$NEWROOT"; do
warn "Failed to mount -t ${rootfs} -o $_rflags_ro ${root#block:} $NEWROOT"
fsck_ask_err
done
Из этого куска кода ясно, что к опциям монтирования в хвосте всегда приписывается ro
.
Присмотревшись повнимательнее, я заметил, что параметры ro
и rw
в параметрах ядра всё же передаются и приписываются предпоследним параметром, но погоды это не делает, т.к. в конце всегда дописывается ro
.
Теперь вопрос - они там на приколе что ли совсем? Это действительно захардкожено или я чего-то не понимаю? Как передать ему rw
?
Карта rx7900xt. Система void.
На иксах в хроме при просмотре рутуба при разворачивании видео на весь экран иногда картинка зависает. При этом видео продолжает воспроизводиться - об этом свидетельствует звук. Хром получается закрыть только сочетанием клавиш оконного менеджера i3.
В ходе экспериментов удалось получить выхлоп хромого в консоль
[4160:4160:0920/203250.113396:ERROR:command_buffer_proxy_impl.cc(325)] GPU state invalid after WaitForGetOffsetInRange.
[4160:4160:0920/203250.149693:ERROR:gpu_process_host.cc(1007)] GPU process exited unexpectedly: exit_code=512
При этом в логе иксов начинается флуд
[ 13709.802] (WW) AMDGPU(0): flip queue failed: Invalid argument
[ 13709.802] (WW) AMDGPU(0): Page flip failed: Invalid argument
[ 13709.802] (EE) AMDGPU(0): present flip failed
[ 13709.831] (WW) AMDGPU(0): flip queue failed: Invalid argument
[ 13709.831] (WW) AMDGPU(0): Page flip failed: Invalid argument
[ 13709.831] (EE) AMDGPU(0): present flip failed
[ 13709.863] (WW) AMDGPU(0): flip queue failed: Invalid argument
[ 13709.863] (WW) AMDGPU(0): Page flip failed: Invalid argument
[ 13709.863] (EE) AMDGPU(0): present flip failed
Найти в сети ничего внятного не смог - есть похожие темы/багрепорты, но там глухо. Продолжаю наблюдения.
следующие → |