URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 74382
[ Назад ]

Исходное сообщение
"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."

Отправлено opennews , 30-Янв-11 23:13 
В списке рассылки разработчиков Linux-ядра представлен (https://lkml.org/lkml/2011/1/27/127) инструментарий  undertaker (http://vamos.informatik.uni-erlangen.de/trac/undertaker), созданный на базе исследовательского проекта VAMOS (http://www4.informatik.uni-erlangen.de/Research/VAMOS/) и предназначенный для выявление проблем с использованием директив препроцессора в исходных текстах с Linux-ядром. Undertaker выполняет статический анализ кода и позволяет определить такие проблемы, как некорректное включение или выключение условных блоков препроцессора, не соответствующих заданной конфигурации (Kconfig).

Наглядно оценить результаты проверки Linux-ядра 2.6.38-rc1 можно на данной странице (http://www4.informatik.uni-erlangen.de/Research/VAMOS/linux-.../).


URL: https://lkml.org/lkml/2011/1/27/127
Новость: http://www.opennet.me/opennews/art.shtml?num=29429


Содержание

Сообщения в этом обсуждении
"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено pavlinux , 30-Янв-11 23:13 
http://www4.informatik.uni-erlangen.de/Research/VAMOS/linux-...
537 строка

#ifdef CONFIG_PCI_MMCONFIG
    else if (!strcmp(str, "nommconf")) {
        pci_probe &= ~PCI_PROBE_MMCONF;
        return NULL;
    }
    else if (!strcmp(str, "check_enable_amd_mmconf")) {
        pci_probe |= PCI_CHECK_ENABLE_AMD_MMCONF;
        return NULL;
    }
#endif

Это оно считает не корректно?

А по-моему, если CONFIG_PCI_MMCONFIG в ядре нету, то и сравнивать не надо (strcmp)
и снимать флаг PCI_PROBE_MMCONF или добавлять PCI_CHECK_ENABLE_AMD_MMCONF,
чтоб потом PCI проверяло то, чего нет. :-/  

----

За то я нашёл другой косяк :),
там же на 20-ой строке:
  
unsigned int pci_probe = PCI_PROBE_BIOS | PCI_PROBE_CONF1 | PCI_PROBE_CONF2 | PCI_PROBE_MMCONF;

Причем пофиг, есть или нет CONFIG_PCI_MMCONFIG

---
Порадовало вот это


/* Define this to allow debugging output */
#undef IPCONFIG_DEBUG

#ifdef IPCONFIG_DEBUG
#define DBG(x) printk x
....


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 30-Янв-11 23:47 
Так держать.

"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено pavlinux , 31-Янв-11 00:05 
> Так держать.

undertaker.cpp: В функции ‘int main(int, char**)’:
undertaker.cpp:346:49: предупреждение: из-за ограниченности диапазона типа данных, результат сравнения всегда ложь
undertaker.cpp:346:72: предупреждение: из-за ограниченности диапазона типа данных, результат сравнения всегда ложь

:-)

Это млин, какая-то курсовая работа студней Универа Santa Catarina из Бразилии,
где много диких абизян.  

int threads = 1;
...
threads = strtol(optarg, (char **)0, 10);

strtol - переводиться как String To Long, у ниха threads = int    


--- undertaker/undertaker.cpp   2011-01-31 00:14:46.713000046 +0300
+++ undertaker/undertaker.cpp   2011-01-31 00:13:49.622000068 +0300
@@ -314,7 +314,7 @@
     char *worklist = NULL;
     char *whitelist = NULL;

-    int threads = 1;
+    long int threads = 1;
     std::list<std::string> models;
     std::string main_model = "x86";
     /* Default is dead/undead analysis */


И ЭТИ ЛЮДИ ЗАНИМАЮТСЯ АНАЛИЗОМ КАЧЕСТВА КОДА ЯДРА ..... :)


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 05:10 
А чему удивляться, корпасты же рулят, нормальных проектов по пальцам перещитать, либо студентики проги недоделки клепают, либо корпоративные гиганты поекты открывают (или не открывают), такие что на 10Гб система уже не лезет, зато wma в mp3 конвертнуть нечем.

"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено EuPhobos , 31-Янв-11 07:50 
> зато wma в mp3 конвертнуть нечем

Используй ffmpeg, Люк


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 09:56 
Вот именно, половина проектов пишется студентами, потому как имея чуть больший опыт, легко находится существующее решение проблемы и не изобретается очередной велосипед. А большая часть проектов в мире это таки велосипеды разной степени свежести.

"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 10:47 
Ваша правда.

Только сколько Вы можете назвать законченных проектов. Законченных и поддерживаемых, а не заброшенных. Большенство выходят за рамки первоначального функционала, разбухают как на дрожжах, грузят систему "дополнительными возможностями" так, что на основные ресурсов не хватает, вот и пишут.


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 10:55 
> Ваша правда.
> Только сколько Вы можете назвать законченных проектов. Законченных и поддерживаемых, а
> не заброшенных. Большенство выходят за рамки первоначального функционала, разбухают как
> на дрожжах, грузят систему "дополнительными возможностями" так, что на основные ресурсов
> не хватает, вот и пишут.

Ни одного. Таких не бывает в принципе. Проекты развиваются по тем же законам, что и любая система. Пока проект нужен разработчику, проект будет развиваться и поддерживаться. как только интерес разработчика угасает, проект ничто не спасет. И все характеристики типа "на дрожжах, грузят систему" субъективны.


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 11:16 
Хм.. интересная позиция, то есть по-вашему, проект не может быть подхвачен кем-то другим?
или разработчики не могут умеренно расширять функционал.. Ядро линухи, наглядный пример того, что могут.

"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 11:19 
> Хм.. интересная позиция, то есть по-вашему, проект не может быть подхвачен кем-то
> другим?
> или разработчики не могут умеренно расширять функционал.. Ядро линухи, наглядный пример
> того, что могут.

Вы считаете, что разработчик это тот кто начал проект? Те кто подхватят, точно так же проходят по статье "разработчик". Насчет "неумеренно расширять", утверждение спорное, если функционал расширяется, то разрабам это нужно зачем-то. без причины и кошка не мяукнет :)


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 11:29 
> без причины и кошка не мяукнет :)

Больные на голову кошки, бывают. И разрабы по большей части люди, со свойственной склонностью к ошибкам, им манагер сказал они сделали.


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 11:32 
>> без причины и кошка не мяукнет :)
> Больные на голову кошки, бывают. И разрабы по большей части люди, со
> свойственной склонностью к ошибкам, им манагер сказал они сделали.

Это смотря какие причины вы признаете адекватными. Кому-то причина это облегчить себе разработку заказанного софта, а кому-то просто перед девушкой похвастаться. Кому-то причина - планы по продаже нового софта, а кому-то улучшение имиджа. Но причина есть всегда, а адекватность причины важна только самому разработчику.


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 11:57 
Ну почему же только ему, мне как юзеру тоже важно, я как ни как учился его софтом пользоваться, привыкал к нему, а он что, взял и кинул, или мне админу его софтину по по юзерам раскидай, их обучи, а он возьми да и забей...

"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 12:01 
> Ну почему же только ему, мне как юзеру тоже важно, я как
> ни как учился его софтом пользоваться, привыкал к нему, а он
> что, взял и кинул, или мне админу его софтину по по
> юзерам раскидай, их обучи, а он возьми да и забей...

Потому что если это тебе важно, ты займешься развитием софта (причем не обязательно участием в написании кода), но тогда ты сам будешь разработчик. А если ты развитием не можешь или не хочешь заняться, то значит тебя это все и так устраивает и ты пар выпускаешь.


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 12:22 
Переводом справки?)) и условие разрабам ставить?)) да-да, они послушают.

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

В свое время протокол TCP/IP был принят стандартом не сразу, но без долгих раздумий, и сколько лет уже им пользуются и менять не торопятся, но чем выше ровень, тем среднестатистическая продолжительность жизни проекта меньше. Это правильно что ли?


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 12:27 
> Переводом справки?)) и условие разрабам ставить?)) да-да, они послушают.

А еще можно поучаствовать в оплате разрабских трудодней.

> Развитием, дажем третьей части, того чем пользуюсь заниматься не реально. А клоню
> к необходимости жесткой стандартизации, и формирования базисов.

Поучаствовать в финансировании разработки нужного лично тебе большого ума и опыта не нужно.

> В свое время протокол TCP/IP был принят стандартом не сразу, но без
> долгих раздумий, и сколько лет уже им пользуются и менять не
> торопятся, но чем выше ровень, тем среднестатистическая продолжительность жизни проекта
> меньше. Это правильно что ли?

В те времена было проще принимать судьбоносные решения, решающих было меньше. А сейчас думают количество перейдет в качество, только коммунизма все так же нет :)


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 12:57 
> В те времена было проще принимать судьбоносные решения, решающих было меньше. А сейчас думают количество перейдет в качество, только коммунизма все так же нет :)

Да причем тут... Задолбали просто всякие со своими аймудами, и медведы которые их пиарят, и внедряют инновационые технологии, и переводят все и вся в цифру, а по факту имеем сайты не работающие ни с чем кроме ие, либо с голым html и
<br> как единственным средством разметки.


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 13:19 
>> В те времена было проще принимать судьбоносные решения, решающих было меньше. А сейчас думают количество перейдет в качество, только коммунизма все так же нет :)
> Да причем тут... Задолбали просто всякие со своими аймудами, и медведы которые
> их пиарят, и внедряют инновационые технологии, и переводят все и вся
> в цифру, а по факту имеем сайты не работающие ни с
> чем кроме ие, либо с голым html и
>

как единственным средством разметки.

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


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено cmp , 31-Янв-11 14:03 
То есть надо кого-то послать в самой грубой форме...кого? )))

"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено fr0ster , 31-Янв-11 14:07 
> То есть надо кого-то послать в самой грубой форме...кого? )))

Если у вас только вопрос возникает, то боюсь пошлют вас... дяди по стандартам с ойпадлами.


"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено Карбофос , 31-Янв-11 12:15 
не прикапывайся к студентам! :) у них еще всё впереди
только конструктивная критика!

"undertaker 1.0 - анализатор корректности блоков Си-препроцес..."
Отправлено pavlinux , 31-Янв-11 15:50 
> только конструктивная критика!

конструктивный патч показал.


"очередной детсад от павлина"
Отправлено Вова , 01-Фев-11 15:56 
>[оверквотинг удален]
> @@ -314,7 +314,7 @@
>      char *worklist = NULL;
>      char *whitelist = NULL;
> -    int threads = 1;
> +    long int threads = 1;
>      std::list<std::string> models;
>      std::string main_model = "x86";
>      /* Default is dead/undead analysis */
>

> И ЭТИ ЛЮДИ ЗАНИМАЮТСЯ АНАЛИЗОМ КАЧЕСТВА КОДА ЯДРА ..... :)

этот threads задаёт количество процессов, на которые надо распараллелить анализ ядра.
Если кто-то задаст значение, которое приведёт к переполнению, это уже само по себе некорректно.
Вполне нормальный кусок кода/


"очередной детсад от вантуса"
Отправлено pavlinux , 01-Фев-11 17:13 
>[оверквотинг удален]
>>      char *worklist = NULL;
>>      char *whitelist = NULL;
>> -    int threads = 1;
>> +    long int threads = 1;
>>      std::list<std::string> models;
>>      std::string main_model = "x86";
>>      /* Default is dead/undead analysis */
>>
>> И ЭТИ ЛЮДИ ЗАНИМАЮТСЯ АНАЛИЗОМ КАЧЕСТВА КОДА ЯДРА ..... :)
> этот threads задаёт количество процессов, на которые надо распараллелить анализ ядра.

Пох...ю что он задаёт.

> Если кто-то задаст значение, которое приведёт к переполнению, это уже само по

Понятия "кто-то" в Си нету. Кода статистического анализа и расчёта вероятности не вижу.

> себе некорректно. Вполне нормальный кусок кода/

Функция возвращает long, значит присваиваться этот результат должен переменной
такого же типа, и нипёт, что "когда-то никогда что-то как-то" не случиться.

Надо было юзать atoi()


"очередной детсад от вантуса"
Отправлено Вова , 01-Фев-11 17:28 
Нет, это очередная ошибка, излишний пуризм. Данная переменная будет иметь  значения от единицы (умолчательное значение) до нескольких десятков, проверка на ошибочную работу strtol - имеется, проверка на значение переменной - тоже имеется. Вывод - если кто-то задал количество процессов в 24145123525523323242342343422  - тот сам себе злобный буратино.
Займись чем-нибудь полезным?

"очередной детсад от вантуса"
Отправлено pavlinux , 01-Фев-11 17:42 
> - если кто-то задал количество процессов в

Программы делаются в помощь людям, а не для развития геморроя.


"ещё раз"
Отправлено Вова , 01-Фев-11 17:58 
Сценарий геморроя в данном конкретном случае?
Предусмотрен опциональный параметр: количество параллельно работающих потоков, аналог make -jN; параметр читается, значение параметра после этого проверяется, есть умолчательное значение - 1.
Какой геморрой?

"ещё раз"
Отправлено pavlinux , 01-Фев-11 18:29 
Даже не знаю как вам объяснить, зачем у самолётов запас прочности превышает
все возможные перегрузки в 2.5 раза, за идиота примите.



"ещё раз"
Отправлено Вова , 01-Фев-11 18:55 
> Даже не знаю как вам объяснить, зачем у самолётов запас прочности превышает
> все возможные перегрузки в 2.5 раза, за идиота примите.

код, который вы пытаетесь "исправить", корректно поддерживает задание максимум 2147483647 процессов, реально же будут испольвано максимум 20 процессов в случае обычной пользовательской системы, и, видимо, 32 000 процессов в случае использования 32000-ядерной системы. Запас прочности составляет от 100 миллионов до 100 тысяч раз.

Принимаю.


"ещё раз"
Отправлено pavlinux , 01-Фев-11 21:00 
Вы случаем в разработке PHP не участвуете?



"уж лучше петросянить"
Отправлено Вова , 02-Фев-11 09:46 
жги. Сразу два варианта остри - вариант на "да, я принимаю участие" и вариант "нет, не принимаю".

почитаю, может и посмеюсь.


"очередной детсад от вантуса"
Отправлено nuclight , 06-Фев-11 18:06 
> Нет, это очередная ошибка, излишний пуризм. Данная переменная будет иметь  значения
> от единицы (умолчательное значение) до нескольких десятков, проверка на ошибочную работу

Соль в том, что этот проект как раз посвящен проверке качества и пуризма. А получается сапожник без сапог, хочется сказать авторам, "Врачу, исцелися сам".