Дневник еще одного неудачника


Оптимизацияя в компиляторах и безопасность.
geov
Можно и не обладая глубоким умом писать так,
что другому понадобится много ума, чтобы понять написанное.
Лихтенберг Георг Кристоф

Увидев в rss заголовок из опеннета обратил внимание. Я иногда пищу всякие там драйверы и проверок в них просто немерено и еще ничего не вырезалось. Я конечно ожидал мног настоящих багов (например gcc из Xilinx ISE умеет собирать код для powerpc только если включить -O2 иначе все глючит, падает и не работает). Вообще хотелось бы полные примеры а не огрызки которые там написаны..

Ну первый пример из PDF достаточно оригинален и да, компилятор действительно поступает по стандарту (§6.5.6/p8). И написано там нечто вроде:

If both the pointer operand and the result point to elements of the same array object, or one past the last element of the array object, the evaluation shall not produce an overflow; otherwise, the behavior is undefined.

Т.е. компилятор вообще говоря действует по стандарту и нечего на зеркало пенять. Однако вопрос в другом. Мне всегда казалось что надо сравнивать два условия на манер (buf_end>buf) && (buf_end-buf>len). Это, насколько я знаю, вполне определено по стандарту и гораздо понятнее. Кроме того если buf_end априори больше buf то первую проверку можно опустить. Мы все математики черт возьми, мы же знаем как считается расстояние.

Второй пример не менее интересен и фееричен. Если вы написали кривую программу в таком виде, а вы ее наверняка и warning от компилятора получили, то пенять на то что оптимизатор что-то там вырезал как-то глупо. И вдвойне обидно что современный стандарт си позволяет объявление переменных в любом месте (если вы пользуетесь MSVC то я прекрасно понимаю как вам больно это слышать) и разыменование указателя до проверки его валидности это както неправильно, хотя говорят разработчики ядра Linux любят так делать.

Вообще довольно интересно что многие баги оаписанные далее возникли не просто так а из попытки применить какието битхаки с переполнением, которое вообще говоря нормально определено только для беззнаковых целых и в других случаях поведение декларируется как всякие там undefined и implementation defined (а это еще большая головная боль).

Пишите понятный код, и компилятор вас поймет.

(no subject)
geov
Debian думает переходить на systemd или upstart.

Здоровенная дискуссия. И чего только люди не делают чтобы gentoo openrc не пользоватся.
Tags:

Оптика?
geov
В доме насверлили дырок, ставят пластиковые трубы и говорят, что проводят оптику. Если это так, то я нифига не готов, как оказалось, у меня домашний датацентр не собран.

The Parallella Computer
geov
http://www.adapteva.com/products/eval-kits/parallella/

ARM, FPGA, Epiphany. Я уже хочу поигратся.
Tags: ,

kexec
geov
Попробовал kexec. Оно работает. Единственный смысл — сохранить crashdump.

Для уменьшения downtime не сильно полезен. На desktop, переходящем в стадию загрузки ядра через пару секунд смысла нет. На серверах, у которых все по полминуты инициализируется смысл может и есть, но все равно всё надо остановить и запустить заново так что выигрыш невелик.

Есть еще Ksplice но он сгнил в недрах Oracle.

S.M.A.R.T.
geov
S.M.A.R.T. это такая штука, в которой никто ни фига не понимает, но как только видит, посылает делать резервные копии.
Tags: ,

qemu qcow2
geov
Обнаружилось, что если при создании qcow2 образа в qemu включить lazy_refcounts то с любым типом буферизации savevm делается за несколько секунд.

Почему про это нигде толком не написано? Уже не первый человек устраивает закат солнца вручную, пытаясь сделать снимок виртуальной машины.
Tags:

Модем
geov
Кажется мой dlink 524t таки дает дубу. Свич с большой долей вероятности не заводится с первого раза и если переткнуть из одной сетевухи  другую с большой долей вероятности потом не работает в обоих. Не работает (точнее работает но packet loss около 50-80 %, зависит от длинны пакета) до первой "перезагрузки" модема (втыкание/вытыкание вилки). Непосредственно модем и мозги вроде работают без перебоев. Где-то я читал что в сием устройстве деградирует преобразователь перед свичом, но это вилами по воде писано. Странно, что агрегат вообще столько лет проработал.

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

Давно пора конечно ethernet, но у нас же центр города, читай самая *опа цифрового мира.

новый компиз
geov
Compiz 0.9.0 вышел но, 


* Completely rewritten developer API in C++, using boost and stl to simplify a
  number of tasks originally handled in core.
ОНИ ИЗДЕВАЮТСЯ!!!!! 
Tags:

FreeBSD
geov
Чтото пора сваливать на FreeBSD с этих ваших линупсов.

?

Log in