LINUX.ORG.RU

Избранные сообщения Vlad-76

Анализ процесса

Форум — Admin

Привет всем! Подскажите утилиту которой можно подключиться к процессу и увидеть, какая функция активно используется. Я ее использовал раньше, но сейчас не могу вспомнить название.

 

anonymus123
()

Для чего нужно EINTR?

Форум — Development

Многие системные вызовы могут возвращать ошибку и устанавливать errno == EINTR, при этом рекомендуется повторить системный вызов. Для чего это требуется? Это как то можно использовать в своей программе? Почему ядро не может само обработать эту ситуацию и перезапустить вызов?

 

iluha16
()

C++, boost asio, сетевой сервер на 10К клиентов.

Форум — Development

Ну, есть такая «проблема 10K» - потоков/процессов столько не насоздаёшь, да и нерационально иметь потоков больше числа ядер, а select() тоже не поюзаешь, ибо каждый раз гонять между ядром и приложением 10К-кусок данных - не круто. И тут приходит epoll и все радуются. Или там kqueue или чё-то такое.

А вот как это представлено в boost::asio?

kiverattes
()

Есть ли способ отловить, где течет С?

Форум — Development

Приветствую.

Есть С-код: https://github.com/derickr/pecl-dbus/blob/master/dbus.c

Если вкратце, этот код - биндинг полутора функций для работы с d-bus.

И этот код течет аки решето.

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

Вопрос: есть ли какой-нибудь изящный способ вывести все переменные объекта или иным способом отдебажить где жор?

Благодарю.

 ,

windows10
()

что значит & у поля класса?

Форум — Development

Например, есть код.

class A {
private:
  const X& x;
public:
  A(const X& x) : x(x) {};
  getX() { return x; }
}

int main() {
  X x1;
  A a(x1);
  std::cout<<a.getX()<<"\n";
}

Верно ли я понимаю что в таком случае созданная в main() переменная x1 типа X не будет копироваться, а поле класса x будет инициализировано ссылкой на оригинальный x1?

 

AndreyKl
()

Проект на чистом Си

Форум — Development

Камрады, всем доборый день!

Решил тряхнуть стариной, написать кое-что полезное для себя и таких же упоротых личностей. Заодно вспомнить Си (который без «крестов»). Естественно, хочется сделать «красиво, модно, молодёжно» и удобно. Вопрос - как проекты на Си принято начинать в 2024? Ну там пакетные менеджеры (а они вообще есть?), линтеры и прочее счастье. Какой стандарт сейчас считается «правильным» для использования и какую литературку/доку по нему почитать? Буду благодарен, если покидаетесь статьями или книгами.

 , , ,

small-entropy
()

Как мне реализовать системные вызовы?

Форум — Development

Если вы не слышали, я создаю гибридное ядро ОС, которое будет полностью свободным и лёгким. Как мне реализовать системные вызовы?

 , , , ,

anatoliy6463
()

LVM, Proxmox, NVME LV read only. Че делать

Форум — Linux-hardware

Столкнулся с проблемой что в одной из виртуальных машин посыпались ошибки дисковых операций типа:

[  +0.000006] EXT4-fs error (device dm-6): kmmpd:179: comm kmmpd-dm-6: Error wri                                                                                                                                                             ting to MMP block
[  +0.000006] blk_update_request: I/O error, dev nvme0n1, sector 57003600 op 0x1                                                                                                                                                             :(WRITE) flags 0x8800 phys_seg 1 prio class 2
[  +0.000006] EXT4-fs warning (device dm-6): ext4_end_bio:342: I/O error 10 writ 

первая мысль умер винт…но dmesg хоста ничего не говорил об ошибках в своих сообщениях. Похоже проблема моя описана тут: https://bugzilla.proxmox.com/show_bug.cgi?id=3738 , но решения из этого топика не решили проблему. Сейчас при попытке создать VM получаю ошибки:

 WARNING: Thin pool Gigabyte_nvme/Gigabyte_nvme needs check has read-only metadata.
  WARNING: Thin pool Gigabyte_nvme/Gigabyte_nvme has unexpected transaction id 18, expecting 19.
no lock found trying to remove 'create'  lock
error before or during data restore, some or all disks were not completely restored. VM 100 state is NOT cleaned up.

WARNING: Thin pool Gigabyte_nvme/Gigabyte_nvme needs check has read-only metadata. Сам же этот том находится в режиме только чтение:

 --- Logical volume ---
  LV Name                Gigabyte_nvme
  VG Name                Gigabyte_nvme
  LV UUID                Rg53rQ-MrG1-o1UF-c7UJ-VwOd-lcU1-mecQ40
  LV Write Access        read/write (activated read only)
  LV Creation host, time pve, 2023-03-09 11:22:50 +0300
  LV Pool metadata       Gigabyte_nvme_tmeta
  LV Pool data           Gigabyte_nvme_tdata
  LV Status              available
  # open                 0
  LV Size                493.39 GiB
  Allocated pool data    9.56%
  Allocated metadata     0.82%
  Current LE             126308
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     512
  Block device           253:5

утилита проверки выдает такое:


thin_check /dev/Gigabyte_nvme/Gigabyte_nvme_meta0
examining superblock
TRANSACTION_ID=18
METADATA_FREE_BLOCKS=1250303
examining devices tree
examining mapping tree
  thin device 2 is missing mappings [1699316, 1699444]
    bad checksum in btree node (block 9276)

Куда дальше копать то? может вообще по неправильному пути иду?

 , ,

pistoletov
()

Линукс, ассемблер и X11

Статьи — Разработка
Линукс, ассемблер и X11

Это текстовая версия моей статьи про разработку графического приложения на чистом ассемблере под линукс.

( читать дальше... )

 , ,

alex0x08
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Статьи — Разработка
Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 2)

Эта статья является продолжением предыдущей публикации, в которой описывается разработка сетевой библиотеки на C++20. В данном продолжении акцент сделан на более детальном описании разработки алгоритма Raft и его интеграции с сетевой библиотекой.

( читать дальше... )

 , , ,

Reset
()

Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Статьи — Разработка
Разработка сетевой библиотеки на C++20: интеграция асинхронности и алгоритма Raft (часть 1)

Введение

С годами работы в области распределённых систем, я понял, что мой опыт не будет полным без реализации алгоритма Raft. Это осознание побудило меня к действию: я решил создать свою реализацию, используя асинхронные возможности C++20.

( читать дальше... )

 , , , ,

Reset
()

Отдебажить где именно произошла ошибка разыменования ссылки в perl

Форум — Development

Предположим есть такой код (добавил нумерацию строк для наглядности)

1:  use strict;
2:
3:  my %a = (
4:     a => 12,
5:     b => '',
6:     x => { z => 22 },
7:     l => 'sd'
8:  );
9:
10: my %c = (
11:    f => 'test',
12:    b => $a{b}{c},
13:    g => $a{a},
14:    d => $a{x}{z},
15: );

он выдает такую ошибку: Can't use string ("") as a HASH ref while "strict refs" in use at /tmp/t.pl line 15. Из него совершенно неочевидно где именно произошла ошибка. Если структура %c будет ещё сложнее и длиннее, то поиск ошибки вообще превратится в боль. Можно ли как-то сделать, чтобы perl явно показал, что проблема в данном случае в $a{b}{c}?

 ,

Olegymous
()

Это рассинхронизация массива?

Форум — Admin

Здравствуйте, форумчане. Похоже, запустил систему без одного диска (кабель выпал). Подключил его обратно, и теперь массив не стартует. Запустил его сам: mdadm --assemble --readonly --force --name --scan. Теперь он отображается в /proc/mdstat как неполный:

6442186752 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/3] [_UUU]

На всех трёх ЖД, которые рабочие, запускал mdadm --examine УСТРОЙСТВО, и на последней строчке массив так же отображается как неполный: Array State : .AAA ('A' == active, '.' == missing, 'R' == replacing). А вот у виновника эта строчка гласит, что массив полный: Array State : AAAA ('A' == active, '.' == missing, 'R' == replacing).

Как так, это глюк какой-то? Чтобы его вернуть назад, его нужно удалить из массива и снова добавить? Стоит ли сначала проверить контрольные суммы, или это бесполезно? Сами данные вроде целые, файловая система проходит проверку и монтируется.

 

fingolfin
()

как правильно линковать в make?

Форум — Development

есть пакет в Debian из репозитория libssh2-1 создающий в /usr/lib/x86_64-linux-gnu/
соответственно
libssh2.a
libssh2.so
libssh2.so.1
libssh2.so.1.0.1

он кривой, скачал с исходника последнуюю версию, сделал конфиг и мейк, без мейк инсталл, как прилинковать эту библиотеку при компиляции, т.к. то что делаю ниже все равно почему то тянет старую версию, приходится просто подменять файл libssh2.so.1.0.1 в /usr/lib/x86_64-linux-gnu/

g++ -o AddWork AddWork.cpp -L./ibpp/core -lfbclient -libpp -DIBPP_LINUX -L./libssh2-1.8.2/src -lssh2-1.8.2-ssl-dbg

 

wolverin
()