The OpenNET Project / Index page

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

Результаты анализа системой Coverity безопасности и качества открытого кода

25.02.2012 11:42

Компания Coverity, развивающая инструментарий для автоматического анализа кода на предмет наличия проблем безопасности и ошибок представила очередной ежегодный отчёт (PDF, 550 Кб) с результатами изучения 37 млн строк кода из 45 наиболее активно разрабатываемых открытых проектов и 300 млн строк кода из 41 анонимного проприетарного продукта. В среднем, в открытых проектах было выявлено 0.45 дефектов на 1000 строк кода, для проприетарных продуктов данный показатель составляет 0.64, при этом средний показатель качества для всей индустрии разработки ПО составляет 1 ошибка на 1000 строк кода.

Система Coverity Scan была создана в 2006 году по инициативе Министерства национальной безопасности США для обеспечения и усиления безопасности информационной инфраструктуры Соединённых Штатов, в которой используются различные Open Source проекты. В настоящее время программа тестирования Coverity Scan охватывает около 300 открытых проектов, суммарный размер кода которых превышает 61 млн строк. При автоматическом анализе данного кода было выявлено 49654 дефектов из которых уже исправлено 15278. Для анализа кода в этом году была использована новая версия Coverity Scan в которой были представлены дополнительные средства статического анализа кода и добавлены алгоритмы выявления новых типов ошибок.

В представленном отчёте подробно проанализированы выявленные ошибки в ядре Linux 2.6, PHP 5.3 и PostgreSQL 9.1. Проекты были выбраны исходя из различий в их типе (системное и прикладное ПО) и размере кодовой базы. Уровень качества кода данных проектов оказался значительно выше средних показателей по индустрии:

  • В ядре Linux, объём кода которого составляет 6.8 млн строк кода, было выявлено 4261 ошибок из которых 1249 признаны ошибками с высокой степенью опасности (451 - повреждение памяти, 418 - некорректный доступ к памяти, 139 - утечка ресурсов, 266 - неинициализированные переменные). Показатель качества кода ядра составил 0.62 дефекта на 1000 строк кода, что оказалось сравнимым с средним показателем качества рассмотренных проприетарных продуктов (0.64). Примечательно, что данное сходство показателей качества коррелирует с размером кодовой базы - средний размер участвующих в оценке проприетарных продуктов составил около 7 млн строк кода. Если рассматривать отдельные подсистемы, то в дереве Staging и сетевом стеке уровень качества составляет 0.97, в звуковой подсистеме 0.38, файловых системах 0.65, драйверах 0.61, других компонентах 0.48;
  • В PHP 5.3, объём кода которого составляет 538 тыc. строк кода, выявлено 97 ошибок из которых 15 признаны опасными (5 - повреждение памяти, 3 - некорректный доступ к памяти, 7 - утечка ресурсов). Показатель качества кода интерпретатора PHP составил 0.20 дефекта на 1000 строк кода. Наилучшее качество отмечено в Zend - 0.09, уровень качества основного кода и стандартных расширений - 0.14, ext_date - 0.17, PDO - 0.30, расширения SQLite - 0.61;
  • В PostgreSQL, объём кода которого составляет 1.1 млн строк кода, выявлено 233 ошибок из которых 116 опасных (22 - повреждение памяти, 36 - некорректный доступ к памяти, 50 - утечка ресурсов, 8 - неинициализированные переменные). Показатель качества кода СУБД PostgreSQL составил 0.21 дефекта на 1000 строк кода;

Некоторые наблюдения:

  • Открытые проекты достаточно активно реагируют на выявленные системой Coverity дефекты. Например, команда разработчиков BRL-CAD устранила более 1600 дефектов в течение 5 дней после того как авторы исследования уведомили разработчиков;
  • В сумме в 2011 году было исправлено 6133 выявленных дефектов, что больше чем в 2010 году;
  • Всего в рассмотренных 45 открытых проектах было отмечено 16884 проблем, распределение которых выглядит следующим образом:
    • Проблемы с порядком вычислений (Control Flow Issues) 3,128
    • Разыменование NULL-указателя (Null Pointer Dereferences) 2,818
    • Неинициализированные переменные (Uninitialized Variables) 2,051
    • Повреждения памяти (Memory Corruptions) 1,551
    • Проблемы с обработкой ошибок (Error Handling Issues) 1,535
    • Утечка ресурсов (Resource Leaks) 1,384
    • Проблемы с обработкой целочисленных значений (Integer Handling Issues) 1,368
    • Некорректный доступ к памяти (Memory - Illegal Access) 1,136
    • Небезопасная обработка данных (Insecure Data Handling) 824
    • Некорректные выражения (Incorrect Expression) 550
    • Проблемы с одновременным доступом (Concurrent Access Violations) 253
    • Ошибки использования API (API Usage Errors) 178
    • Зависания программ (Program Hangs) 107
    • Несоответствия иерархии класса (Class Hierarchy Inconsistencies) 1


  1. Главная ссылка к новости (http://www.bradenton.com/2012/...)
Лицензия: CC-BY
Тип: К сведению
Короткая ссылка: https://opennet.ru/33188-coverty
Ключевые слова: coverty, test, quality, php, postgresql, kernel
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (187) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 12:44, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –31 +/
    Нормально так. Все ошибки показательны для языков программирования C, C++ и являются их генетическими дефектами. Как вывод: большие проекты на C,C++ неизбежно будут страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.
     
     
  • 2.15, Аноним (-), 14:45, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +16 +/
    > страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.

    Ну хорошо, а большие проекты вебни страдают от CSRF, XSS, insecure data handling во всех ипостасях, SQL-иньекций, ошибок разграничения доступа, ... - ну что, вам полегчало, да? :)


     
     
  • 3.62, Xasd (ok), 22:40, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    интересно что используя нормальные Фрэймворки -- довольно сложновато допустить ... большой текст свёрнут, показать
     
     
  • 4.79, ананим (?), 23:42, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >[зато очень ЛЕГКО допустить SQL-Inj -- в PHP

    а где сложнее?
    >при традиционном использовании там MySQL]

    а с MsSQL это будет сложнее сделать?

    зыж
    это применимо для ЛЮБОГО языка программирования. и СУБД соответсвенно тоже.

    ну а для того, кто даже прочитать доку (по-русски!!! не в каждом мсдн найдёшь :D) http://php.net/manual/ru/security.database.sql-injection.php не удосужился,... конечно пыхпых виноват.
    странно что они в этом ещё сиквел-сервера не обвиняют. а то выдают понимаешь ли секюрную инфу всем подряд.
    а сравненние фрэйворком с языками программирования... и не знаю как это назвать.

     
     
  • 5.83, VoDA (ok), 00:32, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >>[зато очень ЛЕГКО допустить SQL-Inj -- в PHP
    > а где сложнее?

    В java через JPA или любые языки работающие с SQL через связанные переменные.

     
     
  • 6.91, ананим (?), 01:29, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ха! Через.
    А jdbc там ужО отменили?
    Через <подставь_нужное> можно и в <подставь_любой_язык>.
    А можно даже свои фильтры написать.

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

     
     
  • 7.94, VoDA (ok), 02:32, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ха! Через.
    > А jdbc там ужО отменили?
    > Когда в языках запретят прямой доступ к данным, тогда и придёт апокалепсис.

    В каком то смысле jdbc уже отменили. в приложении ты можешь запросить работающий EntityManager, а можешь запросить JDBC коннект.

    Потому несколько следствий:
    1. с точки зрения приложения JPA не обертка поверх JDBC, поскольку приложение не имеет доступа к созданию JPA-инфраструктуры.
    2. JPA может быть построен поверх иных нежели JDBC коннектов с системами хранения, в том числе и NoSQL.
    3. поскольку все конфигуриврование инфраструктуры идет через архитектора проекта, а на боевых серверах через админа, то даже криворукие программеры не могут применить JDBC коннекты без разрешения архитектора. Коннекторов просто не создано в инфраструктуре.

     
     
  • 8.110, ананим (?), 04:40, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    не в каком-то, а в прямом смысле вы передёргиваете мягко говоря или возможно д... текст свёрнут, показать
     
     
  • 9.111, Xasd (ok), 04:57, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    причём тут можно или нельзя чащще всего ошибки допускаются -- в случаях ког... текст свёрнут, показать
     
     
  • 10.138, ананим (?), 12:48, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Что ж Объясню ещё раз Php 8212 это язык Как и java И там и там можно испо... текст свёрнут, показать
     
     
  • 11.153, Xasd (ok), 14:35, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    хорошо чтобы Вы поняли мою мысль -- я спрошу вот так почему в PHP -- те т... текст свёрнут, показать
     
     
  • 12.155, arisu (ok), 14:39, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    you made my day no, really ... текст свёрнут, показать
     
     
  • 13.159, ананим (?), 14:57, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    присоединяюсь D ... текст свёрнут, показать
     
  • 12.162, ананим (?), 15:08, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    не знаю, почему продолжаю отвечать нет таких языков нет в той же жабе без j... текст свёрнут, показать
     
  • 9.135, VoDA (ok), 11:42, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Пожалуйста напиши мне пример JavaEE приложения на JPA с возможностью SQL-injecti... текст свёрнут, показать
     
     
  • 10.139, ананим (?), 12:52, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Выше уже ответил Зыж И ещё потом удивляются отношения к жабистам, как к курице,... текст свёрнут, показать
     
  • 10.238, Аноним (-), 23:06, 02/03/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Это константы запретить В java уже запретили что-ли ... текст свёрнут, показать
     
  • 7.190, Tav (ok), 01:19, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Справедливости ради, в jdbc никто не подставляет параметры в sql выражения путем конкатенации строк, для этого есть http://docs.oracle.com/javase/7/docs/api/java/sql/PreparedStatement.html, исключающий возможность инъекции и улучшающий производительность, за счет того, что разбор выражения выполняется один раз.

    API, в котором для подстановки параметров в sql выражения предполагается использовать конкатенацию или другие средства работы со строками, — неимоверный дебилизм.

     
     
  • 8.194, ананим (?), 04:58, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    серьёзно никто-никто D пример и не откуда-нибудь, а с IBM D http publ... большой текст свёрнут, показать
     
     
  • 9.211, Tav (ok), 11:15, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    В PHP prepared statements добавили позже, следуя примеру JDBC И да, те, кто изн... текст свёрнут, показать
     
     
  • 10.225, ананим (?), 14:40, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    На практике наблюдаю ровно противоположенное 8212 те кто и использовал php с... текст свёрнут, показать
     
  • 6.213, Yankee (??), 12:40, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Вы бы уж говорили за себя. Потрудитесь почитать следующее:
    http://codeigniter.com/user_guide/libraries/input.html
    Очень познавательно будет для Вас расширить кругозор и не тявкать впредь не удосужившись погуглить, как с этим XSS (ипрочими) эффективно борятьсяв толковых фреймворках.
     
  • 2.24, Карбофос (ok), 15:14, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    в хоть программировали на этих языках, или это так, точка зрения жаба/дотнет-кодера? пардон, если я ошибаюсь.
     
     
  • 3.39, тоже Аноним (ok), 17:32, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Плевки жабистов и дотнетчиков в сторону Сей и Крестов на форумах - это не точка зрения, это нечто физиологическое.
     
     
  • 4.201, Аноним (-), 10:30, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Плевки жабистов и дотнетчиков в сторону Сей и Крестов на форумах -
    > это не точка зрения, это нечто физиологическое.

    Как будто они багов в том числе и ведущих к уязвимостям не делают :)

     
  • 2.25, Аноним (-), 15:17, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Нормально так. Все ошибки показательны

    Все программы имеют ошибки? Капитан, Вы?

     
  • 2.28, fork8 (ok), 15:33, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +10 +/
    Многое пишется на явах, шарпах, но когда в статье говорится о ядре линукса, к примеру, или о бд postgres, сама критика с/c++ становится не то, что неуместной, а какой то неадекватной.
     
  • 2.58, Аноним (-), 21:23, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • –4 +/
    > большие проекты на C,C++ неизбежно будут страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.

    Что касается С++, то в 21-м веке уже нет никакой необходимости управлять памятью или любыми другими ресурсами вручную. Если кто-то всё еще считает, что в С++ управляют памятью руками, то он отстал от жизни лет на 10, а может и на 15.

     
     
  • 3.63, Xasd (ok), 22:48, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> большие проекты на C,C++ неизбежно будут страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.
    > Что касается С++, то в 21-м веке уже нет никакой необходимости управлять
    > памятью или любыми другими ресурсами вручную. Если кто-то всё еще считает,
    > что в С++ управляют памятью руками, то он отстал от жизни
    > лет на 10, а может и на 15.

    печаль тут в том что некоторые не только считают, но ещё е УПРАВЛЯЮТ в C++ ресурсами вручную :-/ ...

     
     
  • 4.65, pavlinux (ok), 23:03, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    С++ надо вообще прибить как не нужный балласт между С и более высшими языками.
     
     
  • 5.74, Карбофос (ok), 23:22, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    и тут Остапа понесло... ;) просто уровень абстракции несколько другой, но не до такой же степени, чтоб из константной строки при сложении с объектом-переменной создавать объект. o_O
     
     
  • 6.77, pavlinux (ok), 23:31, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Вот я из-за принципа Ц++ не юзаю. Рядом со мной сидят ещё трое, вот они там х..ячат
    интерфейсы на плюсах, у меня мозг вянет после их диалогов...  И главное обсуждаются
    не проблемы, скжем, узких мест тех или иных алгоритмов сортировки, а как какой объект
    куда-то вынуть, член в класс, классы члена в объект, всё это в конструктор, а потом
    деструктор, а почему не работает деструктор, а какого фига оно не delete если тама
    авто деструктор, члены, классы, члены, классы,члены, классы,.... а-а-а-а-а-а...

      

     
     
  • 7.80, Аноним (-), 23:55, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > И главное обсуждаются не проблемы, скжем, узких мест тех или иных алгоритмов сортировки

    Не знаю как где, но авторы С/С++ позаботились о том, чтобы прикладным программерам не нужно было обсуждать алгоритмы сортировки.
    Для С есть функция qsort. Для С++ - stl::sort(). Можешь быть уверен, реализованы они через наилучший алгоритм.

     
     
  • 8.82, anonymous (??), 00:06, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +3 +/
    наилучший Как насчёт почти-полностью отсортированных данных, где нужен radix, и... текст свёрнут, показать
     
     
  • 9.85, arisu (ok), 00:46, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    т-с-с как ты посмел сомневаться, неверный stl и libc созданы не человеками, но... текст свёрнут, показать
     
     
  • 10.95, Кирилл (??), 02:32, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Но там действительно наилучшие решения на данный момент времени Всегда Изобрет... текст свёрнут, показать
     
     
  • 11.133, Df232z (ok), 11:35, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Уважаемый, наилучших алгоритмов не существует Для любого данного алгоритма ес... текст свёрнут, показать
     
     
  • 12.142, arisu (ok), 13:47, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    он не поймёт увы ... текст свёрнут, показать
     
     
  • 13.156, тоже Аноним (ok), 14:42, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Раз уж вы завели ликбез-дуэт, допевайте куплет и эта самая оптимальность алгори... текст свёрнут, показать
     
     
  • 14.160, arisu (ok), 14:58, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ты что сказать-то хотел ... текст свёрнут, показать
     
     
  • 15.170, тоже Аноним (ok), 17:01, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Что стремление к оптимальности алгоритмов должно чем-то оправдываться Процессор... текст свёрнут, показать
     
     
  • 16.175, arisu (ok), 18:02, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    а мужики до сих пор не знают 8230 наверное, ты просто всем сообщить не успел п... текст свёрнут, показать
     
     
  • 17.184, тоже Аноним (ok), 22:36, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Сплошь и рядом - пофигу До и после сортировки может происходить много чего инте... текст свёрнут, показать
     
     
  • 18.185, arisu (ok), 22:44, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    вот что интересно вроде бы и связно человек пишет, и вещи достаточно неглупые ... текст свёрнут, показать
     
     
  • 19.198, тоже Аноним (ok), 09:05, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    По двум причинам Во-первых, это все-таки холиварный срач, приходится соблюдать ... текст свёрнут, показать
     
     
  • 20.215, arisu (ok), 13:51, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    не куда лучше , а всегда лучше вот на что стойку сделали ... текст свёрнут, показать
     
  • 21.226, тоже Аноним (ok), 15:47, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Тут логическая нестыковка либо вы читаете оппоненту ликбез, либо предполагаете,... текст свёрнут, показать
     
  • 9.86, Аноним (-), 01:14, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Наилучший для общих случаев, которых 99 Да, исключительные условия, возможно, ... текст свёрнут, показать
     
     
  • 10.89, xxx (??), 01:22, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Я искренне рад за тебя, и даже завидую Зафигачил qsort и радуешься ... текст свёрнут, показать
     
  • 7.81, Карбофос (ok), 23:58, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    ну какие-то мелочные они у тебя. ко мне коллеги обычно обращаются с просьбами расширить опциями интерфейс - не больше. я к ним - с такими же претензиями. что-то концептуальное - совещание делаем. но не дискутируем по каждой мелочи. у каждого есть строго своё поле действий. кто писал код, тот и получает тикеты. хотя, тот же проект можно переписать на сях, но много переделывать нужно будет. векторы, к примеру. не сильно хочется на realloc/malloc переходить и на связные списки. понимаю, что это фактически то же самое, только в обвеске разница. но тем не менее :) рубили бы с самого начала на сях - другое дело. а сейчас уже позно рыпаться.
     
  • 7.100, fork (??), 02:56, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >Вот я из-за принципа Ц++ не юзаю

    С такими принципами может и с линуксом завязать, где на сях много чё написано, да ник сменить?

     
     
  • 8.101, fork (??), 02:57, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Помарочка - на плюсах, а не сях ... текст свёрнут, показать
     
  • 3.202, Аноним (-), 10:31, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > что в С++ управляют памятью руками, то он отстал от жизни лет на 10, а может и на 15.

    В XXI веке нет никакой нужды в этих галимых велосипедах, самолетах и поездах! Ведь давно уже придуманы ракеты! А то что в магазин в соседнем закоулке так ездить не очень практично получается - ну извините...

     
  • 2.84, VoDA (ok), 00:34, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Нормально так. Все ошибки показательны для языков программирования C, C++ и являются
    > их генетическими дефектами. Как вывод: большие проекты на C,C++ неизбежно будут
    > страдать от ошибок программиста отслеживать в ручную управлением памятью и пр.

    н-да.

    большая часть, а именно:
    Разыменование NULL-указателя (Null Pointer Dereferences) 2,818
    Неинициализированные переменные (Uninitialized Variables) 2,051
    Повреждения памяти (Memory Corruptions) 1,551

    Ошибки присутствия прямой работы с памятью. И это в 2012 году =(((

     
     
  • 3.90, xxx (??), 01:25, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +3 +/
    И не говори, GC также жрет неуёмно память. в runtime выполняется куча всякой левой фигни. И это в 2012 году =(((


     
     
  • 4.98, VoDA (ok), 02:43, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да Тут выбор либо ошибки в коде или CPU работает за программиста Машина должна... большой текст свёрнут, показать
     
     
  • 5.103, fork (??), 03:27, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +5 +/
    <Как только появится язык, который принципиально уберет часть багов из java и C# (к тому же <будет простым в применении), так сразу он начнет захват энтерпрайза.
    Хочется верить, что так может быть, но до последнего времени все критичные к производительности программы делались на сях да плюсах притом с асмовскими вставками в критических случаях, ибо на языках вроде явы да шарпа - съедание памяти да падение скорости повышаются чуть ли не в геометрической прогрессии. Если все-же такой язык и возможен - это, наверное, потребует скорее аппаратного решения, а не просто синтаксиса и прочих особенностей языка, но пока такие решения проваливались.

     
     
  • 6.104, fork (??), 03:29, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Помарочка - сях да плюсах

     
  • 6.130, VoDA (ok), 11:30, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    gt оверквотинг удален Начнем с начала, что в реал-тайме вообще выделение освоб... большой текст свёрнут, показать
     
     
  • 7.144, arisu (ok), 13:54, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    ну вот — чего не хватишься, всё у них запрещают. а почему, собственно, надо запрещать? потому что некоторые путают RT и «хочу все ресурсы и чтобы никто не дёргал»? или потому, что не способны даже GC с прогнозируемым временем исполнения написать?

    вообще, не начинал бы ты про RT. не надо. а то у меня комплекс неполноценности будет от того, что я однажды вполне себе использовал для RT Scheme с вполне рабочим GC. и оно таки было RT. и даже работало без проблем. а оказывается, так нельзя…

     
     
  • 8.148, VoDA (ok), 14:22, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Запрещать нужно для запрета совершать ошибки Даже на С освобождение памяти ди... большой текст свёрнут, показать
     
     
  • 9.151, arisu (ok), 14:32, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    с каких пор это костылище стало эталоном O_O каким образом это должно волновать... текст свёрнут, показать
     
     
  • 10.171, VoDA (ok), 17:40, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Я уверен, что вы умеете писать программы так, что в них не содержатся ошибки Но... текст свёрнут, показать
     
     
  • 11.176, arisu (ok), 18:04, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    нет, я умиляюсь тому, как жабисты гордятся своими костылями p s как будто в жа... текст свёрнут, показать
     
     
  • 12.180, VoDA (ok), 21:34, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    мемори ликов - нет пока сама JVM не течет, но и это давно отлажено в сферичес... текст свёрнут, показать
     
     
  • 13.181, arisu (ok), 21:38, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    задумчиво совсем нет, ага только вот пардон, заякореные данные, к которым про... текст свёрнут, показать
     
     
  • 14.205, Аноним (-), 10:36, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А иногда и просто медвежья услуга Тем более что дебилушки не умеют им нормально... текст свёрнут, показать
     
  • 13.206, Аноним (-), 10:40, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Да как ни назови, если память так или иначе утекает, это утечки памяти Вообще, ... текст свёрнут, показать
     
  • 7.230, adolfus (ok), 21:47, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Начнем с начала, что в реал-тайме вообще выделение/освобождение не должны применяться. А в идеале запрещены.

    мне в реалтайме нужно обрабатывать поступающие из очереди запросы. И как я это сделаю не выделяя/освобождая память, если я не знаю, сколько памяти потребуется для обработки запроса, пока его не заберу?
    Если вам нужно часто просить/освобождать память относительно небольшими (в среднем много меньше страницы) кусками, есть кошерный выход -- вы самостоятельно пишете аллокатор в юзерспейсе, заточенный специально под ситуацию. Ускоряет обработку неиллюзорно. Проверено на системе, которая обрабатывает до 65536 очередей с запросами, требующими для обработки от нескольких байт до мегабайта.

     
     
  • 8.231, VoDA (ok), 00:55, 28/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Предварительное аллоцирование по максимально возможному размеру запроса В RT вс... текст свёрнут, показать
     
  • 5.108, arisu (ok), 04:24, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +5 +/
    8230 затачивались под стадо взаимозаменяемых обезьян вот и весь секрет нет ... большой текст свёрнут, показать
     
     
  • 6.128, жабабыдлокодер (ok), 11:20, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Да-да, раньше вот были знатоки и профессионалы: лошадь подкуешь, запряжешь, сидишь на ней правильно, потом распрягать, чистить, корм тот же правильно подобрать нужно... А сейчас? За руль садятся, зажигание включают - и поехали. Обезьяны, чего с них возьмешь...
     
     
  • 7.136, Аноним (-), 11:51, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А сейчас в авариях погибают больше чем во время боевых действий. Обезьяны, чего с них возьмешь...
     
  • 6.129, Df232z (ok), 11:28, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >…затачивались под стадо взаимозаменяемых обезьян. вот и весь секрет.

    Как впрочем и с++. Куда то толпу симула погромистов надо было девать.нет. как только >появится язык *ещё тупее*, чем жаба — так вот и начнёт. проблема в том, что особо тупее-то и некуда, если хочется язык хоть немного практически полезным сохранить.
    Я бы не назвал java тупым. Излишне много словным - да, медленно развивающимся - да. Но не тупым.
    >потому что code monkeys cannot into Smalltalk

    Вообще то, основной причиной по которой Smalltalk, проиграл java было то что он был на тот момент платным. А вообще есть хорошее выступления "What Killed Smalltalk" от дяди Боба:
    http://www.youtube.com/watch?v=YX3iRjKj7C0

     
     
  • 7.146, arisu (ok), 14:04, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Я бы не назвал java тупым. Излишне много словным — да, медленно
    > развивающимся — да. Но не тупым.

    увы, он реально тупой. да ещё и испорченый попыткой запихать туда концепции, которые изначально там не планировались и не были нужны. к тому же он совершенно неконсистентный (ага, мой любимый пример с int и Integer). я понимаю, зачем так было сделано, но костылями оно от этого быть не перестаёт.

    > Вообще то, основной причиной по которой Smalltalk, проиграл java было то что
    > он был на тот момент платным.

    и по этой тоже, конечно. но не только по этой.

    p.s. я не говорю, что цпп-обезьянки чем-то сильно лучше. увы-увы.

     
     
  • 8.150, VoDA (ok), 14:25, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Будь последователен - расскажи в чем неконсистентность наличия примитивного и об... текст свёрнут, показать
     
     
  • 9.152, arisu (ok), 14:33, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    ты сам уже всё сказал если до сих пор не очевидно 8212 медицина бессильна p... текст свёрнут, показать
     
     
  • 10.172, VoDA (ok), 17:47, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Да, есть косяк Появился в лохматом году из за того, что на объектах работать сл... текст свёрнут, показать
     
     
  • 11.178, arisu (ok), 18:07, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    я же сказал я понимаю, зачем так было сделано я не понимаю, почему жабисты при... текст свёрнут, показать
     
     
  • 12.182, VoDA (ok), 21:39, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ок Это был маркетинговый ход для привлечения С ников, которых много и для кот... большой текст свёрнут, показать
     
     
  • 13.183, arisu (ok), 21:45, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    там для начала неплохо было бы саму JVM починить, с её боксингом всего и вся а ... текст свёрнут, показать
     
     
  • 14.210, Аноним (210), 11:06, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Вы наверное удивитесь но замыкания в жаве внезапно есть ... текст свёрнут, показать
     
     
  • 15.216, arisu (ok), 13:56, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    я просто буду улыбаться, глядя на очередной костыль, про который жабисты сначала... текст свёрнут, показать
     
  • 14.232, VoDA (ok), 00:57, 28/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    боксинг это фишка компилятора синтаксичекий сахарок замыкания в прочем тоже са... текст свёрнут, показать
     
     
  • 15.233, arisu (ok), 01:15, 28/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    боксинг 8212 это фишка VM которая VM не позволяет передавать указатели ссы... текст свёрнут, показать
     
  • 6.132, VoDA (ok), 11:34, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > а так — я тебе секрет расскажу: Smalltalk в применении прост.
    > и весьма навёрнутый отладчик с возможностью
    > отлаживать *работающую* систему — без специальных хуков, сборок, запуском под «инструментальной средой»

    Наверное про отладчик нужно писать для заманивания С или С++. Но явно не для java-истов у которых это out-of-box. =)))

    Хочешь отлаживать работающую систему - да пожалуйста. Хоть через SSH прокинь, хоть еще как подцепись ;)))

     
     
  • 7.145, arisu (ok), 14:00, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    у жабистов. отладка. оборжака. ребятки, когда у вас будет отладчик хотя бы в половину мощности и удобства смолтолкового — вы будете получать мультиоргазмы и смотреть на всех других как на дождевых червяков.

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

    p.s. ещё один повод у меня ненавидеть жабу — вполне личный: сантехники купили команду, разрабатывавшую Strongtalk. попробуй без википедии угадать, для чего.

     
     
  • 8.157, VoDA (ok), 14:48, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    из того, что увидел на вики-учебнике про отладчик для смаллтока и что не присутс... текст свёрнут, показать
     
     
  • 9.158, arisu (ok), 14:57, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    не надо читать вики-учебники особенно по смолтолку пока ты с этой системой б... текст свёрнут, показать
     
  • 6.204, Аноним (-), 10:34, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Никакой фантастики — java, как и C# прошли в лидеры поскольку
    > …затачивались под стадо взаимозаменяемых обезьян. вот и весь секрет.

    Капитан как обычно суров но справедлив :)

     
  • 5.203, Аноним (-), 10:32, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Машина должна думать, а человек работать. Только час работы машины несоизмеримо
    > дешевле часа работы человека. Как следствие ВСЕ, что можно переложить на
    > машину нужно переложить на нее.

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

     
     
  • 6.217, arisu (ok), 13:57, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    неа, зря ты: этот, вроде, вполне адекватный.
     
  • 2.197, Некто (??), 06:22, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> "будут страдать от ошибок программиста отслеживать в ручную управлением памятью"

    Является ли вышеприведенный текст "генетическим дефектом" русского языка?

     

     ....большая нить свёрнута, показать (92)

  • 1.4, Аноним (-), 13:14, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Сегодня анализирует, завтра сама будет писать код. Не далеко до кнопки "Зделать зашибись". Так и до восстания машин докатится можно :(.
     
     
  • 2.7, тоже Аноним (ok), 14:15, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +11 +/
    Ну, на компьютере давно есть кнопка "проверить орфографию" - кто же ей пользуется?
    Три предложения - три ошибки. Зато машины не восстанут.
     

  • 1.5, MrClon (?), 13:24, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > дереве Staging и сетевом стеке уровень качества составляет 0.97, файловых системах 0.65, драйверах 0.61

    Посмотреть так вообще не понятно как оно умудряется работать, однако-же работает.

     
     
  • 2.6, 1 (??), 13:56, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    так и работает... то тут отвалится, то там
     

  • 1.8, uy2qw (?), 14:20, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > команда разработчиков BRL-CAD устранила более 1600 дефектов в течение 5 дней

    Вот это производительность труда! Они устраняли 40 дефектов в час! Или там просто штат очень большой?

     
     
  • 2.11, qux (ok), 14:36, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Инфа непонятно откуда, гугл по "brl cad covernity" почти ничего не находит.
     
     
  • 3.14, ваня (??), 14:44, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Coverity
     
     
  • 4.17, qux (ok), 14:50, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Точно, туплю. Ну по крайней мере в англ. варианте так же:

    http://blog.coverity.com/uncategorized/coverity-releases-the-coverity-scan-20

     
  • 2.27, Аноним (-), 15:20, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Вот это производительность труда! Они устраняли 40 дефектов в час!

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

     
     
  • 3.31, Неиван (?), 16:15, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > И что, ты не запатчишь 40 кривых использований указателей за час например?

    Ну, некоторые люди не просто перед каждым обращением указателю пишут "if (!p) return -1" (как это, вероятно, делаете вы) а изучают код и выясняют, почему же указатель оказался нулевым хотя не должен, и исправляют ошибку там, где она возникла, а не там, где проявилась. За полторы минуты этого не сделать.

    И, да, я думаю, что имеются ввиду не 40 одинаковых строк в одной функции, а 40 указателей, разбросанных по всему проекту.

     
     
  • 4.69, arisu (ok), 23:09, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    особенно интересно, как это выяснит система анализа, у которой вообще мозгов нет, только набор правил. я так сильно подозреваю, что починили десяток реальных ошибок и вставили кучу ненужных проверок, чтобы эта дура заткнулась уже и не нервировала.
     
     
  • 5.97, Кирилл (??), 02:37, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    "Мозги" такие же, как у человека -- находит находит подобие в заданной базе образцов.
     
     
  • 6.224, arisu (ok), 14:14, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    нененене, господа модераторы. тут нам только что не напрягаясь решили основную проблему AI, а вы сообщения удаляете. ведь, оказывается, чтобы сделать эмулятор мозга — достаточно уметь находить подобие в базе образцов!
     
     
  • 7.236, Кирилл (??), 17:30, 28/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Да. Но не только. Нужно ещё эту базу образцов составить, т.е. "научить". Сколько там ребёнка ложку учат держать, а читать-писать? Будет ли экономически выгодной система на обучение которой уйдут десятки лет? Сделать "эмулятор мозга" (т.е. саморазвивающуюся адаптивную систему) трудно не логически, для этого вся математика есть, а чисто физически сложно добиться такой плотности связей и такой чувствительности, а значит способности к обучению.
     
  • 4.207, Аноним (-), 10:43, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну, некоторые люди не просто перед каждым обращением указателю пишут "if (!p)
    > return -1" (как это, вероятно, делаете вы)

    Не, ну что это за жирный троллинг? Вам не кажется что потоньше троллить надо?!

     
  • 2.40, тоже Аноним (ok), 17:34, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Возможно, ряд ошибок решался примитивной автозаменой - никто же не сказал, что ошибки были разными.
     
     
  • 3.50, Ytch (?), 20:13, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Возможно, ряд ошибок решался примитивной автозаменой - никто же не сказал, что ошибки были разными.

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

     
     
  • 4.66, тоже Аноним (ok), 23:06, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, статический анализатор и должен показывать как раз это место, а не те места, где оно используется. Разве что "это место" - шаблон.
     
  • 2.68, pavlinux (ok), 23:07, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> команда разработчиков BRL-CAD устранила более 1600 дефектов в течение 5 дней
    > Вот это производительность труда! Они устраняли 40 дефектов в час! Или там
    > просто штат очень большой?

    Не, там ашипки типа

    while (1) {
          for ( i = 0; i > 0; i++);
              if ( i = NULL );
                 printf(%d, 3.15159265);
              else
                 goto exit();
    }

    Уже 10 штук :)

     

  • 1.9, qux (ok), 14:32, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Третье место — неинициализированные переменные. Как оно мимо gcc проходит? Или на выхлоп никто не смотрит, Werror не использует?
     
     
  • 2.38, xxx (??), 17:20, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Видел ли ты что мимо IAR проходит? Там вообще такое ощущение что разработчики компилятора наркоманы и стандарт Си на косяки перевели. У меня теперь в практику вошло, весь код пришедший с IAR прогонять через GCC и Clang'овский статический анализатор. Clang кстати тоже многие интересные моменты замечает, что GCC пропускает.
     
     
  • 3.52, Ytch (?), 20:27, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > У меня теперь в практику вошло, весь код пришедший с IAR прогонять через
    > GCC и Clang'овский статический анализатор. Clang кстати тоже многие интересные моменты
    > замечает, что GCC пропускает.

    А как вам это удается, если не секрет? Я давненько не имел дел с IAR'овскими компиляторами, но раньше, помню, натравить что-то, кроме IAR, на проект сделанный конкретно под IAR было весьма проблематично в силу огромного числа платформо-специфичных и сильно-iar-специфичных конструкций (а без них iar выдавал такое, что без слез не взглянешь). Любая утилита и/или компилятор спотыкались и отваливались на таких штуках и без суровой правки исходников их нельзя было использовать.

     
     
  • 4.93, xxx (??), 01:39, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > А как вам это удается, если не секрет?

    Сейчас там в IAR в основном все специфичные вещи запиханы в #pragma, которые GCC тупо игнорирует. Ну или мне пока очень везет=) Мне обычно и не надо, чтобы код с IAR собрался достаточно на warning и error поглядеть. А так да, приходится портировать. Просто весело когда кроме специфичных для компилятора #pragma или ещё чего вылезают вещи которые не совместимы с жизнью и IAR это лихо проглатывает.


     
  • 3.53, Ytch (?), 20:44, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    По моему скромному опыту, абсолютный рекордсмен и чемпион в этом сомнительном де... большой текст свёрнут, показать
     
     
  • 4.96, xxx (??), 02:37, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Я уже давно стал полным сторонником того, что проприетарные средства разработки ... большой текст свёрнут, показать
     
     
  • 5.99, VoDA (ok), 02:49, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Или наоборот наберут бывших явистов для которых элементарные понятия
    > цифровой схемотехнки и электроники или беззнаковые типы и ограничение в 1Кб
    > памяти - rocket science.

    Странные джависты, что джаву на С или С++ меняют. Возвожно как джависты не смогли адекватно работать, вот решили что С легче будет. Наивные =)))


    PS хорошо отношусь к С и С++ разработчикам, но знаю что это другое множество задач ;)

     
  • 5.191, Ytch (?), 01:24, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    У меня, в этом смысле, аналогично С некоторыми а может и всеми сигнальниками... большой текст свёрнут, показать
     
     
  • 6.218, arisu (ok), 14:00, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > По поводу «молодых» — ситуация полностью аналогичная. Либо «профильные» ребята, но с
    > программированием туго, либо «программисты», но настолько «объектно-ориентированные»
    > и/или далекие от «железа», что нужны годы, чтоб из оставшихся вышел
    > толк в нашем деле.

    если бы только у вас так… проблема с нормальными сотрудниками. «— Летать не умеют, стрелять — тоже пока не умеют. Но — орлы!» то есть, денег хотят как орлы, и чтобы при этом их отходы жизнедеятельности считались полезной работой.

     
  • 4.208, Аноним (-), 10:45, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > это TI CodeComposer Studio. Включить его в strict-режим невозможно - он
    > прекращает компиляцию найдя более определенного количества ошибок (точно не помню сколько,
    > но много). Ирония в том, что при этом он так и
    > не доходит до ваших файлов - эта тьма ошибок (для strict-режима)
    > уже в их собственных файлах.

    Что ж ты от проприетарщиков то хотел, дяденька?

     
  • 2.113, pavlinux (ok), 05:45, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Третье место — неинициализированные переменные. Как оно мимо gcc проходит? Или на
    > выхлоп никто не смотрит, Werror не использует?

    [code]
    #include <stdio.h>
    #include <string.h>

    const char *TEXT = "123456789";

    int main()
    {
      char a;

            if (strlen(TEXT) > 20)
                    a = 'A';
            if (strlen(TEXT) < 10)
                    printf("%d\n", a);

      return 0;
    }
    [/code]

    $  gcc -W -Wall -Wextra -Werror -Wunused -Wuninitialized test.c

    Молчит тварь :)

     
     
  • 3.115, arisu (ok), 06:16, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а с чего бы ему вякать, если неинициализированные глобальные статики попадают в BSS, которая по-умолчанию инициализируется нулями? перемести 'a' в main() и убери static — сразу заорёт.

    ты как первый раз замужем, честное слово.

    p.s. опа, успел код поменять. забавно: a всегда инициализировано, причём значением из первого условия — если собирать с -O2. а если с -O0 — то там как и полагается бредятина. выверты gcc…

    и да: молчит, зараза.

     
     
  • 4.118, pavlinux (ok), 06:24, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > перемести 'a' в main() и убери static — сразу заорёт.

    А может сразу инициализировать, хрен ли мучатся?!
    Есть пример. Рабочий! Глючный! Умнож такую багу
    на десяки тыщь строк, и ищи её там...

     
     
  • 5.120, arisu (ok), 06:25, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    а ты тоже сразу отвечать не спеши, у меня волшебная кнопка редактора работает.
     
     
  • 6.209, Аноним (-), 10:47, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > а ты тоже сразу отвечать не спеши, у меня волшебная кнопка редактора
    > работает.

    Соревнуетесь кто кого техничнее поднае... редактированием? :)

     
  • 5.121, arisu (ok), 06:26, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    p.s. в любом случае за такой код надо тестикулы отрывать.
     
     
  • 6.123, pavlinux (ok), 06:29, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > p.s. в любом случае за такой код надо тестикулы отрывать.

    А в таком примере, переменная "a" может уползти далеко,
    за 3-4 функции, через 5 файлов,... а если это библиотека,
    которую использует другая библиотека, так ваще жо..а.

     
     
  • 7.125, arisu (ok), 06:35, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    just don't do that. есть же хорошая практика: изначально присваивать переменной чушь и assert'ить. ну, и assert'ить на предмет соблюдения контрактов, конечно. «и много-много макросов детишкам принесла…»
     
     
  • 8.126, pavlinux (ok), 06:46, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    В ядре почти все свободные переменные неинициализируются Свободные, в смысле те... текст свёрнут, показать
     
  • 4.122, pavlinux (ok), 06:27, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > а с чего бы ему вякать, если неинициализированные глобальные статики попадают в
    > BSS, которая по-умолчанию инициализируется нулями? перемести 'a' в main() и убери
    > static — сразу заорёт.
    > ты как первый раз замужем, честное слово.
    > p.s. опа, успел код поменять. забавно: a всегда инициализировано, причём значением из
    > первого условия — если собирать с -O2. а если с -O0
    > — то там как и полагается бредятина. выверты gcc…
    > и да: молчит, зараза.

    [code]
    char *a;

            if (strlen(TEXT) > 20)
                    a = "A";
            if (strlen(TEXT) < 10)
                    printf("%d\n", ++a);
    [/code]

    А вот так SEGFALT словим

     
     
  • 5.141, qux (ok), 13:24, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Тогда или ++(*a), или %p и отсутствие сегфолта, не?
    Во втором случае оно еще и ругается уже.
     
  • 4.124, pavlinux (ok), 06:33, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > забавно: a всегда инициализировано, причём значением из  первого условия

    :)

     
  • 2.137, Df232z (ok), 11:59, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Третье место — неинициализированные переменные. Как оно мимо gcc проходит? Или на
    > выхлоп никто не смотрит, Werror не использует?

    Все просто - не инициализированные переменные активно используются.
    Есть специальная техника - туннелирование.
    Позволяет передавать значения переменных в функцию без дополнительных затрат времени.
    Выглядит это вот так:
    [code]
    #include <stdio.h>
    void f1(){
      int a = 100;
      a++;
    }
    void f2(){
      int b; /*!*/
      printf("Sure 101 = %d",b);
    }
    int main(){
    f1();
    f2();
    }
    [/code]
    Очень активно используется в ядре линукс. Также почти все звуковые драйверы написаны подобным образом, но это скорее по историческим обстоятельствам.

    Метод работать то работает, только надежности не прибавляет.

     
     
  • 3.140, qux (ok), 13:18, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Где оно в ядре, взглянуть можно для интереса? Пытался найти, не получилось, -Wno-uninitialized например только в одном месте, не звук.
     
     
  • 4.149, Df232z (ok), 14:23, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Кому нравятся ругань компилятора?
    Правильно - никому.
    Так что починим?
    Правильно - нет.
    Костылик вот наш ответ.
    >>linux-3.3-rc5

    [code]
    /*
    * A trick to suppress uninitialized variable warning without generating any
    * code
    */
    #define uninitialized_var(x) x = x
    [/code]
    Ну ты понял.
    Кстати ответ тем кто считает, что компилятор нам спасет от всех напастей.

     
     
  • 5.154, arisu (ok), 14:37, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    и что это должно продемонстрировать? что компилятор неидеален, и иногда его ворнинги надо насильно затыкать? Кэп, мы в курсе. а просили мы продемонстрировать то, что ты назвал «тунелинг» и на голубом глазу утверждаешь, что в ядре оно «очень активно используется». поскольку ты так уверен — у тебя не должно быть затруднений с приведением хотя бы пары десятков мест, где это используется (хотя для «активно» надо бы сотни как минимум, да уж ладно…)
     
  • 5.161, qux (ok), 15:01, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Прикольно. Но еще бы передачу между функциями увидеть.

    Хотя не понял, как это работает. Если использовать для глобальной переменной, то gcc выдает ошибку "initializer element is not constant". А для автоматической переменной почему не так? Компилит молча с "gcc -O0 -g -Wall -Wextra -pedantic --std=c90".

    clang тоже молча собирает (с дефолтными опциями). С --analyze отлавливает.

     
  • 4.193, pavlinux (ok), 03:41, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот напрямер http lxr linux no linux v3 2 7 drivers xen xen-selfballoon c ... большой текст свёрнут, показать
     
     
  • 5.200, Alex_S (??), 09:58, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >> Где оно в ядре, взглянуть можно для интереса? Пытался найти, не получилось,
    > Ну вот напрямер http://lxr.linux.no/#linux+v3.2.7/drivers/xen/xen-selfballoon.c#L155
    > На 151-ой строке объявляют и не инициализируют cur_frontswap_pages,
    >         static unsigned long cur_frontswap_pages;

      эй, а разве static переменные внутри функции не в ноль инициализируютя по умолчанию ?

     
     
  • 6.221, arisu (ok), 14:06, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >   эй, а разве static переменные внутри функции не в ноль
    > инициализируютя по умолчанию ?

    а вот кстати не помню. ау, у кого там стандарт под рукой?

     
     
  • 7.228, qux (ok), 16:03, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А кстати да. То есть работать должно нормально, хоть стиль и.. хромает.

    If an object that has static storage duration is not initialized explicitly, it is initialized implicitly as if every member that has arithmetic type were assigned 0 and every member that has pointer type were assigned a null pointer constant.

     
  • 6.229, Noname (??), 17:36, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >>> Где оно в ядре, взглянуть можно для интереса? Пытался найти, не получилось,
    >> Ну вот напрямер http://lxr.linux.no/#linux+v3.2.7/drivers/xen/xen-selfballoon.c#L155
    >> На 151-ой строке объявляют и не инициализируют cur_frontswap_pages,
    >>         static unsigned long cur_frontswap_pages;
    >   эй, а разве static переменные внутри функции не в ноль
    > инициализируютя по умолчанию ?

    Практически везде в 0, но это скорее костыль чем фича. :)

     
  • 5.219, arisu (ok), 14:03, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    человек имел в виду совсем другое. он утверждает, что в ядре активно используется хак с неявной передачей локальных переменных через стек. вот мы хотим видеть доказательства сего утверждения. твой пример — он совсем из другой оперы, тут и стек-то не задействован.
     
  • 3.147, arisu (ok), 14:09, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    на самом деле даже средней тупости оптимизатор понаделает тут мегапроблем. что, кстати, было известно давно, чуть ли не с момента появления оптимизирующих компиляторов.

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

     
  • 3.177, Xasd (ok), 18:07, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Позволяет передавать значения переменных в функцию без дополнительных затрат времени.
    > ...
    > Очень активно используется в ядре линукс. ...

    если это используется хотябы гдето [я имею ввиду серъёзные проекты, а не на домашней странице Васи Пупкина] -- то я очередной раз очень разочаруюсь в жизни :-(

     
     
  • 4.179, arisu (ok), 18:12, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > если это используется хотябы гдето

    раньше использовалось. тю, сам использовал ещё во времена DOS — даже с разрешёнными прерываниями.

     
  • 3.195, pavlinux (ok), 05:45, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Очень активно используется в ядре линукс.

    Ага, щаз, сто тыщь раз...

    gcc -fipa-pure-const test.c
    ./a.out
    101=0

    -fipa-pure-const входит во флаг -O, а линуховый дефолтный -02

    Так что, слово "активно" совсем не уместно.

     
     
  • 4.220, arisu (ok), 14:05, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    т-с-с-с. ну что ты всё ломаешь? щаз обидишь его, и он не скажет, какие именно участки ядра надо переделать. а я хотел потом втихаря патчей заслать и выпендриться, сколько багов починил!
     
  • 3.234, netch (ok), 16:53, 28/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Это должно работать очень ненадёжно Gcc любит оптимизацию работы со стеком след... большой текст свёрнут, показать
     
     
  • 4.235, arisu (ok), 17:05, 28/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну теперь я не удивляюсь тому, как в Linux относятся к звуку.

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

     

     ....большая нить свёрнута, показать (39)

  • 1.10, Bizdelnick (?), 14:32, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Перечитал первый абзац 5 раз. Так и не понял, как из 0,45 и 0,64 можно получить в среднем 1.
     
     
  • 2.20, Pahanivo (ok), 15:03, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Перечитал первый абзац 5 раз. Так и не понял, как из 0,45
    > и 0,64 можно получить в среднем 1.

    читать надо учится ...
    первые два числа взяты в результате тестирования КОНКРЕТНЫХ ПРОДУКТОВ
    последнее - ПО ОТРАСЛИ В ЦЕЛОВ

     
  • 2.21, Антон (??), 15:04, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    А запросто. 0.45 и 0.64 -- это усреднение по проектам, а 1.0 -- по всем строкам всех проектов (сказывается вклад низкокачественных проектов с большим числом строк).
     

  • 1.30, gegMOPO4 (ok), 16:08, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Где пометка «На правах рекламы»?
     
     
  • 2.54, Аноним (-), 20:45, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Где пометка «На правах рекламы»?

    Coverity абсолютно бесплатно тестирует все проекты под открытыми лицензиями, нужно только заявку написать.

     
     
  • 3.73, pavlinux (ok), 23:15, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Мы без них потестируем. Пущай код отдают.
    А то блин всё проверят, а самое вкусное покажут только ФБР, АНБ и ЦРУ.

     

  • 1.34, Buy (??), 16:19, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Например, команда разработчиков BRL-CAD устранила более 1600 дефектов в течение 5 дней

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

     
     
  • 2.36, ананим (?), 16:44, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Зато у проприетастов всё хорошо.
    Это хотел сказать?
     
  • 2.41, тоже Аноним (ok), 17:38, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот я хотел услышать о команде разработчиков ядра линукс

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


     
     
  • 3.57, Аноним (-), 21:19, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    "Не нашлось" это синоним "нет вообще"? Тогда почему ежемесячно обновляются ядра, не подскажешь? Или все-таки будем реалистами?
     
     
  • 4.60, Аноним (-), 21:54, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Еще лучше, еще быстрее!!
     
  • 4.71, тоже Аноним (ok), 23:11, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, так и будьте реалистом, а не пустословом.
    Устранение ошибок отнюдь не означает, что они были такими тривиальными, что их может обнаружить даже компьютер (речь об этом).
     
  • 4.72, arisu (ok), 23:11, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > Тогда почему ежемесячно обновляются ядра, не подскажешь?

    ChangeLog знает.

     

  • 1.56, Аноним (-), 21:13, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Пока писал ответ, тред удалили Фактически, да Объясняю подробнее не все комит... большой текст свёрнут, показать
     
     
  • 2.59, жабабыдлокодер (ok), 21:43, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Положим, студентов никто и не допускает ни до ядра и до СУБД Там есть специальн... большой текст свёрнут, показать
     
     
  • 3.61, Аноним (-), 22:24, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    По собственному опыту могу сказать, что в большинстве случаев, т н ревью кода... большой текст свёрнут, показать
     
  • 3.196, anonymous vulgaris (?), 06:18, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > С появился, как ответ на определенную ситуацию,

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

    >в точности также, как позднее и С++.

    Конечно же совсем не так.

    > Я думаю, что  разработчикам С/С++ компиляторов нужно делать больший упор на  анализ, чтобы такие ошибки можно было отлавливать если не прямо в IDE, то хотя бы на этапе компиляции.

    Системам статического анализа 100 лет. Посмотрите lint например. Lint first appeared (outside of Bell Labs) in the seventh version (V7) of the Unix operating system in 1979.  Не помогает.

     

  • 1.75, pavlinux (ok), 23:22, 25/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    http://softwareintegrity.coverity.com/coverity-5-5-webinar-registration.html

    Вот скажите, как вон та песта может быть "... over 15 years of technology marketing experience with expertise in code governance, static analysis and automation"

    Тётке, от силы, лет 27-28 ... ну пусть даже  35!!!


     
     
  • 2.76, Карбофос (ok), 23:28, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    в 12 лет сломала комп у брата. вот как!
     
  • 2.78, arisu (ok), 23:31, 25/02/2012 [^] [^^] [^^^] [ответить]  
  • +4 +/
    это же Director of Product Marketing: они органически неспособны правду говорить.
     
  • 2.188, Serge (??), 23:26, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    чувак, тетке около 45.
     
     
  • 3.189, arisu (ok), 23:28, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > чувак, тетке около 45.

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

     
     
  • 4.214, Sergey722 (ok), 13:10, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    >а на вид ягодка

    ягодка опять

     
  • 3.192, pavlinux (ok), 03:28, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > чувак, тетке около 45.

    Фотошоп рулит!?

     

  • 1.163, Аноним (-), 15:46, 26/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Срач java vs Qt и C# vs Qt уже был?
     
     
  • 2.164, arisu (ok), 15:53, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Срач java vs Qt и C# vs Qt уже был?

    неа, можешь начинать.

     
     
  • 3.166, Аноним (-), 16:06, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Начинаю. Библиотека Qt - это неплохая поддержка для "голого" С++. Сравнивать C# и java нужно именно с Qt, а не с C++.
     
     
  • 4.167, arisu (ok), 16:14, 26/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Начинаю. Библиотека Qt - это неплохая поддержка для "голого" С++. Сравнивать C#
    > и java нужно именно с Qt, а не с C++.

    ну и с чем тут спорить? ты что-нибудь провокативное вкидывай.

     
     
  • 5.199, вкидывают (?), 09:21, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > ну и с чем тут спорить? ты что-нибудь провокативное вкидывай.

    "PHP - глобальное и надежное решение для серьёзного бизнеса, а на сипипи пишут лунупсоеды-недоучки за еду"

     
     
  • 6.223, arisu (ok), 14:08, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    > "PHP - глобальное и надежное решение для серьёзного бизнеса, а на сипипи
    > пишут лунупсоеды-недоучки за еду"

    уйди, мы тут о Qt!

     
  • 6.227, тоже Аноним (ok), 15:49, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +/
    Этот вентилятор уже так забросали, что он давно перестал крутиться...

     
  • 4.212, anonimous (?), 12:06, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Сравнивать языки принято с языками. а библиотеки с библиотеками. Выше было.
     
     
  • 5.222, arisu (ok), 14:07, 27/02/2012 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Сравнивать языки принято с языками. а библиотеки с библиотеками. Выше было.

    ок. тогда от жабы отдираем JVM, а от c# .Net. никак иначе. это — рантаймовые *библиотеки*.

     

  • 1.237, stimpack (?), 19:06, 28/02/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    почему не проанализировали plan9? это ж цитадель высокой мысли и идеальных решений, настолько идеальных, что аж сферических. пишут ли там с ошибками? (прости господи меня за такое вольномыслие)
     
  • 1.239, Аноним (-), 01:04, 03/03/2012 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Иногда такие быстрые исправления ошибок просто пужают.  

    Вон, несколько лет назад, valgrind показывал, что в OpenSSL неинициализированная переменная, Debianовцы "исправили" ошибку, и всё было хорошо.  А потом оказалось, что исходные переменные для создания ключей стали прогнозируемы.

     

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



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

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