The OpenNET Project / Index page

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

undertaker 1.0 - анализатор корректности блоков Си-препроцессора для Linux-ядра

30.01.2011 22:00

В списке рассылки разработчиков Linux-ядра представлен инструментарий undertaker, созданный на базе исследовательского проекта VAMOS и предназначенный для выявления проблем с использованием директив препроцессора в исходных текстах с Linux-ядром. Undertaker выполняет статический анализ кода и позволяет определить такие проблемы, как некорректное включение или выключение условных блоков препроцессора, не соответствующих заданной конфигурации (Kconfig).

Наглядно оценить результаты проверки Linux-ядра 2.6.38-rc1 можно на данной странице.

  1. Главная ссылка к новости (https://lkml.org/lkml/2011/1/2...)
Лицензия: CC-BY
Тип: Программы
Короткая ссылка: https://opennet.ru/29429-linux
Ключевые слова: linux, kernel, gcc, analyze, debug
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, pavlinux (ok), 23:13, 30/01/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    http://www4.informatik.uni-erlangen.de/Research/VAMOS/linux-trees/v2.6.38-rc1
    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 | [b]PCI_PROBE_MMCONF[/b];

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

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




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

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


     
  • 1.2, cmp (ok), 23:47, 30/01/2011 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Так держать.
     
     
  • 2.3, pavlinux (ok), 00:05, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Так держать.

    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 */



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

     
     
  • 3.4, cmp (ok), 05:10, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А чему удивляться, корпасты же рулят, нормальных проектов по пальцам перещитать, либо студентики проги недоделки клепают, либо корпоративные гиганты поекты открывают (или не открывают), такие что на 10Гб система уже не лезет, зато wma в mp3 конвертнуть нечем.
     
     
  • 4.5, EuPhobos (ok), 07:50, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > зато wma в mp3 конвертнуть нечем

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

     
  • 4.6, fr0ster (ok), 09:56, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот именно, половина проектов пишется студентами, потому как имея чуть больший опыт, легко находится существующее решение проблемы и не изобретается очередной велосипед. А большая часть проектов в мире это таки велосипеды разной степени свежести.
     
     
  • 5.8, cmp (ok), 10:47, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ваша правда.

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

     
     
  • 6.9, fr0ster (ok), 10:55, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Ваша правда.
    > Только сколько Вы можете назвать законченных проектов. Законченных и поддерживаемых, а
    > не заброшенных. Большенство выходят за рамки первоначального функционала, разбухают как
    > на дрожжах, грузят систему "дополнительными возможностями" так, что на основные ресурсов
    > не хватает, вот и пишут.

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

     
     
  • 7.11, cmp (ok), 11:16, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Хм.. интересная позиция, то есть по-вашему, проект не может быть подхвачен кем-то другим?
    или разработчики не могут умеренно расширять функционал.. Ядро линухи, наглядный пример того, что могут.
     
     
  • 8.12, fr0ster (ok), 11:19, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Вы считаете, что разработчик это тот кто начал проект Те кто подхватят, точно т... текст свёрнут, показать
     
     
  • 9.13, cmp (ok), 11:29, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Больные на голову кошки, бывают И разрабы по большей части люди, со свойственно... текст свёрнут, показать
     
     
  • 10.14, fr0ster (ok), 11:32, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Это смотря какие причины вы признаете адекватными Кому-то причина это облегчить... текст свёрнут, показать
     
     
  • 11.15, cmp (ok), 11:57, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Ну почему же только ему, мне как юзеру тоже важно, я как ни как учился его софто... текст свёрнут, показать
     
     
  • 12.16, fr0ster (ok), 12:01, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Потому что если это тебе важно, ты займешься развитием софта причем не обязател... текст свёрнут, показать
     
     
  • 13.18, cmp (ok), 12:22, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Переводом справки и условие разрабам ставить да-да, они послушают Развити... текст свёрнут, показать
     
     
  • 14.19, fr0ster (ok), 12:27, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    А еще можно поучаствовать в оплате разрабских трудодней Поучаствовать в финанси... текст свёрнут, показать
     
     
  • 15.20, cmp (ok), 12:57, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Да причем тут Задолбали просто всякие со своими аймудами, и медведы которые и... текст свёрнут, показать
     
     
  • 16.21, fr0ster (ok), 13:19, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    как единственным средством разметки Как раз при том самом Сейчас могут в стан... текст свёрнут, показать
     
     
  • 17.22, cmp (ok), 14:03, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    То есть надо кого-то послать в самой грубой форме кого ... текст свёрнут, показать
     
     
  • 18.23, fr0ster (ok), 14:07, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Если у вас только вопрос возникает, то боюсь пошлют вас дяди по стандартам с ... текст свёрнут, показать
     
  • 3.17, Карбофос (ok), 12:15, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    не прикапывайся к студентам! :) у них еще всё впереди
    только конструктивная критика!
     
     
  • 4.24, pavlinux (ok), 15:50, 31/01/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > только конструктивная критика!

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

     
  • 3.25, Вова (?), 15:56, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > @@ -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 задаёт количество процессов, на которые надо распараллелить анализ ядра.
    Если кто-то задаст значение, которое приведёт к переполнению, это уже само по себе некорректно.
    Вполне нормальный кусок кода/

     
     
  • 4.26, pavlinux (ok), 17:13, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    >>      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()

     
     
  • 5.27, Вова (?), 17:28, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Нет, это очередная ошибка, излишний пуризм. Данная переменная будет иметь  значения от единицы (умолчательное значение) до нескольких десятков, проверка на ошибочную работу strtol - имеется, проверка на значение переменной - тоже имеется. Вывод - если кто-то задал количество процессов в 24145123525523323242342343422  - тот сам себе злобный буратино.
    Займись чем-нибудь полезным?
     
     
  • 6.30, pavlinux (ok), 17:42, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > - если кто-то задал количество процессов в

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

     
     
  • 7.31, Вова (?), 17:58, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Сценарий геморроя в данном конкретном случае?
    Предусмотрен опциональный параметр: количество параллельно работающих потоков, аналог make -jN; параметр читается, значение параметра после этого проверяется, есть умолчательное значение - 1.
    Какой геморрой?
     
     
  • 8.33, pavlinux (ok), 18:29, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Даже не знаю как вам объяснить, зачем у самолётов запас прочности превышает все... текст свёрнут, показать
     
     
  • 9.34, Вова (?), 18:55, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    код, который вы пытаетесь исправить , корректно поддерживает задание максимум 2... текст свёрнут, показать
     
     
  • 10.35, pavlinux (ok), 21:00, 01/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    Вы случаем в разработке PHP не участвуете ... текст свёрнут, показать
     
     
  • 11.36, Вова (?), 09:46, 02/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    жги Сразу два варианта остри - вариант на да, я принимаю участие и вариант н... текст свёрнут, показать
     
  • 6.37, nuclight (ok), 18:06, 06/02/2011 [^] [^^] [^^^] [ответить]  
  • +/
    > Нет, это очередная ошибка, излишний пуризм. Данная переменная будет иметь  значения
    > от единицы (умолчательное значение) до нескольких десятков, проверка на ошибочную работу

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

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

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