грабли

Нечистая сила! FreeBSD 7 тоже больно бьется

Продолжаем про острые углы.

Очень больно ударился об FreeBSD 7-STABLE на amd64, точнее об ейный компилятор C++.

Собирал buildworld 29-го февраля, с виду все как обычно. Однако часть собираемых на этой системе бинарников (наших, C/C++, никакого экстремизма) работает странно:

  • один падает на ровном месте (не всегда, но есть test case), если отнести его на другую машину - продолжает падать. А если взять с другой машины (собранный там) и принести ко мне - все отлично работает;
  • другой не может создать файлик BerkeleyDB 4.x (создав перед этим другой почти такой же). Аналогично, собранный на другой машине - у меня работает.
Полдня коту под хвост, правда биясь об эту проблему нашел еще ошибок в нашем новом варезе.

Сейчас опять делаю buildworld, если не поможет, то что, на 6.x откатываться ? А ZFS ?

Update

  1. бинарный апгрейд на 7.0-RELEASE amd64 - не помог;
  2. на 7.0-RELEASE 32bit - все отлично;
  3. порча наступает на db->open(filename,DB_CREATE|DB_TRUNCATE), при этом файл создается (!) но код ошибки ENOENT
Пошел пересаживаться на 7.0 32 бита.

Update 2. На 32 бита не пересел, обидно ведь! С Berkeley DB совладал, но не понимаю почему этой проблемы не было на gcc 3 :). С самопадающим - совладать не могу пока.

Граждане, не забывайте про -Wall

Как-то я даже удивился, ударившись примерно об такое вот:

// external.c:
float func() { return 1.0; }

// main.c
#include "stdio.h"
int main(void) {
  float val = func();
  printf("%f %f\n",val,func());
}
stdio не в тех кавычках т.к. иначе RSS испортится, а < не понимает красивый форматтер :)
Subscribe to грабли