LINUX.ORG.RU

Особенности программирования под FreeBSD


0

0

Столкнулся тут с такой проблемой, моя программа не хочет работать под FreeBSD (пробовал 3.4 и 4.3). Все компилируется, но во время работы Segmentation Fault. Во время отладки не может обратится к некоторым глобальным переменным (объявленым как static).

Причем под Windows и SUSE Linux все работает на ура. Утечек памяти и прочей байды нет. Проверено CodeGuard'ом.


Код кривой?

Само по себе палать не будет. Трудно что-то сказать, не видя исходников...

Попробуй хотя бы выложить что gdb говорит про этот core.

BaT ★★★★★
()
Ответ на: комментарий от BaT

gdb каждый раз выдает разное. Вылетает на абсолютно разных участках кода, иногда даже не дойдя до функции main().

Причем при трейсе вылетает в одном месте, а при простом запуске в другом.

mikek
() автор топика

Можно отбросить идею, что машина с битой памятью?

Вообще-то, если до main падает - это что-то неординарное в системе, если, опять же, не скомпилированно с с оптимизацией.

Отключи оптимизацию совсем, -g и попробуй позапускать.. Из личного опыта - к примеру, очень подлавливает libc. К примеру - в glibc strncpy(buf, NULL, 0) не падает, а в FreeBSD libc - падает. Разная реализация... Так что, возможны такие ловушки в коде... А вообще - надо пошагово смотреть, какие куски заработают(если большой проект).

BaT ★★★★★
()
Ответ на: комментарий от BaT

Все делается на серваке. Память строго не битая.

Скорее всего что-то с выделением памяти под статические (глобальные) переменные. (Их много)

есть char *n[xxx] - занимающий порядка 10Mb

mikek
() автор топика

Попробуй память выделять не массивом по 10Mb,
а mallocom'ом, типа:

char *ch=NULL;
............
ch=malloc(....);

Если убрать NULL, то указатель будет в .bss сидеть, а так в .data

Дело в том, что если ты в main делаешь не static массив с инициализацией, то он размещается в стеке и возможно во фрюшке с этим траблы есть. Если без инициализации, то в .bss.
Вобщем попробуй malloc'ом и напиши что получается- подумаем.

anonymous
()

Разобрался. Спасибо.

mikek
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.