функция shmat: HP-UNIX 64 bit
От: Димчанский Литва http://dimchansky.github.io/
Дата: 20.05.09 13:13
Оценка:
Пытаюсь закомпилить на новой платформе Itanium64 старые C-файлы, которые в каменный век кем-то писались под HP-UNIX на RISC платформе. Все как бы собралось, но проблема в вываливании в core dump в одном месте, где используется shared memory.

typedef struct SHMReg
{
    char a[11];
    int b;
    int c;
} MyReg;

MyReg *Reg;

...
// в одном из мест делается присваивание
// gcc на нем предупреждает: 
//   warning: cast to pointer from integer of different size
//   warning: assignment from incompatible pointer type
Reg = (struct MyReg*)shmat(shmid, NULL, 0); // возвращает 0x57ca000

В Reg заносится странное для меня число-указатель.
И потом в первом же месте, где пытаемся работать с Reg, вываливаемся c core dump:

Program received signal SIGSEGV, Segmentation fault
si_code: 1 — SEGV_MAPERR — Address not mapped to object.

Есть подозрение, что функция shmat как-то не так используется.
Где грабли?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.