pioner Опубликовано 27 февраля, 2007 Жалоба Поделиться Опубликовано 27 февраля, 2007 При запуске программы происходит segmentation fault. Выдержка из сеанса gdb: Breakpoint 1, main (argc=8, argv=0x7fffffd590c8) at podgon4.c:146 146 data_init(fits_massiv,dataptr,max_mag,BINSIZE,n,n,sr[0],sr[1 ]); (gdb) x/a fits_massiv 0x7fffff8931d0: 0x773ea0 (gdb) print dataptr $1 = (FILE *) 0x7737e0 (gdb) s Program received signal SIGSEGV, Segmentation fault. 0x0000000000403926 in data_init (fits_massiv=Cannot access memory at address 0x7ffffee45b68 ) at read_files.c:771 771 data data_init(fitsfile **fits_massiv,FILE *dataptr,float max_mag,float bin_size,int nx,int ny,float sr1,float sr2){ (gdb) x/a fits_massiv Cannot access memory at address 0x7ffffee45b68 (gdb) print dataptr Cannot access memory at address 0x7ffffee45b60 Суть в следующем: перед самым вызовом функции data_init проверяем значения указателей fits_massiv и dataptr - всё нормально, под них память выделена и доступна. Но как только мы вызвали эту функцию, значения указателей становятся новыми, отличающимися на 8 (всегда, я проверял) и память в том месте, куда они указывают, недоступна. Кто виноват и что делать? Fedora Core 4 gcc 4.0.0 gdb 6.3.0.0 Кстати, под другой конфигурацией (SuSe/gcc3.3) этой ошибки не было. Как проверить, может быть, это глюк сборки gcc под мою систему? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Ineu Опубликовано 27 февраля, 2007 Жалоба Поделиться Опубликовано 27 февраля, 2007 Поставьте третий gcc. Многое из того, что собирается в третьем, не собирается в четвертом. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
pioner Опубликовано 27 февраля, 2007 Автор Жалоба Поделиться Опубликовано 27 февраля, 2007 EvilShadow писал(а) Tue, 27 February 2007 20:12 Поставьте третий gcc. Многое из того, что собирается в третьем, не собирается в четвертом. Пробовал, но не смог. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
pioner Опубликовано 4 марта, 2007 Автор Жалоба Поделиться Опубликовано 4 марта, 2007 Всё оказалось очень просто: функция, в которой творилось это безобразие, возвращала структуру размером примерно 5 Мб! Я стал передавать эту структуру по указателю - и ошибка исчезла. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.