The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск ControlFlag 1.0, инструмента для выявления ошибок в коде на языке Си, opennews (ok), 19-Ноя-21, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


88. "нашли аномалии"  –1 +/
Сообщение от n00by (ok), 20-Ноя-21, 09:41 
> Если найдёт аномалии, что вы с этим будете делать?

Для начала на тривиальном примере посмотрим, что будет делать с аномалиями ведущий программист Пока Линукс. Ты ведь уже изучил Си, у тебя #define больше не объявляет переменную, а типизация перестала быть строгой?

Находим вот тут https://github.com/mikhailnov/bbb-load-tester/blob/565759e69...


static int width = 160;                //640;    // Default for Flash
static int height = 100;        //480;    // Default for Flash
static char *vidsendbuf = NULL;
static int vidsendsiz = 0;

static void open_vpipe()
{
///
    vidsendsiz = width * height * 3;

    vidsendbuf = malloc( vidsendsiz );
///
}


аномалию: malloc() есть, а free() нет.

Внимание, вопрос: есть ли и где ошибка?

Преодолеет ли автономный разработчик необходимый для системного программирования минимум, или какой-то чайник расчехлит в два счёта его "хорошие познания" (ц)?

Ответить | Правка | К родителю #74 | Наверх | Cообщить модератору

101. "нашли аномалии"  +1 +/
Сообщение от Аноним (-), 20-Ноя-21, 13:48 
В чем прикол ? Один буфер на весь запуск или что-то не так ?
Ответить | Правка | Наверх | Cообщить модератору

109. "нашли аномалии"  –1 +/
Сообщение от n00by (ok), 20-Ноя-21, 14:14 
Прикол в том, что код написал "ведущий программист", как заявляет его работодатель. Значит он сам может ответить на достаточно простой вопрос, надо немножко подождать. В крайнем случае кого-то спросит. Они же как бэ разрабатывают операционную систему, а не тупо пилят? ;)
Ответить | Правка | Наверх | Cообщить модератору

126. "нашли аномалии"  +/
Сообщение от mikhailnov (ok), 20-Ноя-21, 15:23 
> Прикол в том, что код написал

Нет. Смотри историю коммитов: https://github.com/mikhailnov/bbb-load-tester/commits/49d172...
В первом коммите есть ссылка на источник.

> "ведущий программист", как заявляет его работодатель.

Это где такое написано? Вот чтоб прям программист и прям ведущий.

> Внимание, вопрос: есть ли и где ошибка?

Там open_vpipe() вызывается один раз и из main(), free() перед завершением программы смысла иметь не будет.

Ответить | Правка | Наверх | Cообщить модератору

158. "нашли аномалии"  –3 +/
Сообщение от n00by (ok), 21-Ноя-21, 11:53 
>> Прикол в том, что код написал
> Нет. Смотри историю коммитов: https://github.com/mikhailnov/bbb-load-tester/commits/49d172...
> В первом коммите есть ссылка на источник.

А, ну да. RPM-разработчики не отвечают за код под которым подписываются.

>> "ведущий программист", как заявляет его работодатель.
> Это где такое написано? Вот чтоб прям программист и прям ведущий.

На сайте шаражки. "В первый день конференции Михаил Новосёлов, один из ведущих разработчиков компании, выступил с докладом..."

>> Внимание, вопрос: есть ли и где ошибка?
> Там open_vpipe() вызывается один раз и из main(), free() перед завершением программы
> смысла иметь не будет.

То есть ты хотел сказать, что система за тобой подчистит, т.е. в отсутствии free() ошибки нет.
В данном частном случае это верно, принимается.

Я обещал расчехление в два счёта, это был счёт "раз". Вопрос "есть ли и где ошибка?" в силе. Поинтересуйся у остальных ведущих разработчиков.

Ответить | Правка | Наверх | Cообщить модератору

178. "нашли аномалии"  +/
Сообщение от mikhailnov (ok), 21-Ноя-21, 21:18 
"один из ведущих разработчиков" != "ведущий программист", как бы тебе ни хотелось натянуть сову на глобус.
Ответить | Правка | Наверх | Cообщить модератору

179. "нашли аномалии"  +/
Сообщение от mikhailnov (ok), 21-Ноя-21, 21:29 
Этот код напоминает мою раннюю писанину на баше: глобальные переменные, оперирование ими из отдельных функций, несамодостаточность функций, как следствие, невозможность сделать нормальные автотесты функций.
Ответить | Правка | К родителю #158 | Наверх | Cообщить модератору

190. "нашли аномалии"  +/
Сообщение от n00by (ok), 22-Ноя-21, 09:13 
То есть найти ошибку в приведённом фрагменте из 7 строчек ты не смог. Я не считаю нужным тебе на неё указывать и вообще учить, поскольку ты за 5 лет не осилил азы Си и публично признал, что не являешься программистом. Осталось тебе приступить к сбору пакетиков в специально отведённом месте.
Ответить | Правка | Наверх | Cообщить модератору

129. "нашли аномалии"  +/
Сообщение от Аноним (31), 20-Ноя-21, 16:02 
очевидно, что open_vpipe() используется только в этом C-файле -- это служебная внутренняя функция, её суть -- в подсчёте аргумента malloc'а из width и height, а также в понятном (разработчику) названии.

результат её выполнения освобождается силами простого free(vpipe);
никаких лишних аргументов для free() считать не надо, поэтому обёртка для него не нужна;

и что не так?

Ответить | Правка | К родителю #88 | Наверх | Cообщить модератору

130. "нашли аномалии"  +1 +/
Сообщение от Аноним (31), 20-Ноя-21, 16:32 
аа, увидел.

но сначала вопрос: ёлки-палки, кто ж так код сокращает?:

> {
> ///
>     vidsendsiz = width * height * 3;
>
>     vidsendbuf = malloc( vidsendsiz );
> ///
> }

это ж непонятно.
сокращайте многоточиями.

vidsendbuf нигде не высвобождается.
open_vpipe() вызывается один раз, затем создаётся поток, который пишет буфер в v4l2sink, а в текущем потоке вызывается вечный цикл, в котором в начало буфера пишутся три байта (в зависимости от текущей секунды с пересчётом на 4) и весь буфер сдвигается на три байта влево.

выход из программы происходит из второго потока в случае, если невозможна запись в v4l2sink.

странностей тут вижу две:
1. выхода из первого потока не вижу, поэтому close() не должен бы выполниться, поэтому дескриптор v4l2sink должен быть закрыт системой;
2. высвобождения буфера не происходит, поэтому он также должен быть закрыт системой;

если полагаться на систему и не писать free(...), то и close() не нужен;
а если есть close(), который не выполняется, то вроде как и free() нужен, хотя он тоже не выполнится.


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

Ответить | Правка | Наверх | Cообщить модератору

159. "нашли аномалии"  –1 +/
Сообщение от n00by (ok), 21-Ноя-21, 11:53 
Про отсутствие free() я явно написал и лишнее не цитировал, поскольку вопрос касается только работы с памятью (и на мелочи вроде int для размера закрываем глаза). Программист операционных систем ответил в #126, что система за ним подчистит, а код вообще писал не он. :) То что Вы копали глубже и нашли close() лишь усугубляет ситуацию.


Ответить | Правка | Наверх | Cообщить модератору

191. "нашли аномалии"  +/
Сообщение от n00by (ok), 22-Ноя-21, 09:20 
В итоге "ведущий разработчик" публично признал в #178, что он не программист. Вопрос "зачем там вообще allocated storage" снят. :)
Ответить | Правка | К родителю #130 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру