LINUX.ORG.RU

mmap Bus error


0

0

Доброго времени суток.

Столкнулся с проблемой - при выполнении нижеследующего кода вылетает ошибка:

Bus error

#include <unistd.h>

#include <fcntl.h>

#include <sys/types.h>

#include <sys/stat.h>

#include <sys/mman.h>

int main (void) { int fd; char *base;

int i;

fd = open ("file", O_RDWR);

base = mmap ( 0, 65536, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );

for (i = 0; i < 80 * 25; ++i)

{ *(base + i * 2) = 'A';

*(base + i * 2 + 1) = 0x55;

}

return (0);

}

Подскажите в какую сторону копать? Заранее спасибо.

anonymous

обычно это связано с хардварным сбоем

а может ты пытаешся омепить слишком большой файл или получить памяти больше чем размер файла???

cvv ★★★★★
()

> for (i = 0; i < 80 * 25; ++i)

помоему у оператора < приоритет выше чем у * попробуйте for (i = 0; i < (80 * 25); ++i)

anonymous
()

a) какой размер у файла ?
 (по логике вещей должен быть не менее 64K)
б) после mmap не помешает проверка if (base==MMAP_FAILED) exit(1)

anonymous
()

Копать в сторону отладочных средств и/или проверки ошибок. Ты уверен, что open успешно отработал?

Запусти свой программный продукт под strace (напр. strace a.out) и пришли сюда последние 10 строчек вывода если, конечно, сам раньше не разберешься.

anonymous
()
Ответ на: комментарий от cvv

Спасибо файл я действительно забыл проверить.

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

застрелись пока еще не позно, если уж и советуеш полную чуш, мог бы хоть проверить

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