Re: функция shmat: HP-UNIX 64 bit
От: Dmi3S Россия http://dmi3s.blogspot.com/
Дата: 20.05.09 14:22
Оценка:
Здравствуйте, Димчанский, Вы писали:

Д>Пытаюсь закомпилить на новой платформе Itanium64 старые C-файлы, которые в каменный век кем-то писались под HP-UNIX на RISC платформе. Все как бы собралось, но проблема в вываливании в core dump в одном месте, где используется shared memory.


Д>[ccode]

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

Д>MyReg *Reg;


Д>...


Д>И потом в первом же месте, где пытаемся работать с Reg, вываливаемся c core dump:

Д>

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

Д>Есть подозрение, что функция shmat как-то не так используется.
Д>Где грабли?

Не спец в HP-UNIX и Itanium64, но вызывает подозрение вот это: char a[11];, т.к. вообще-то

Необходимо учитывать, что сегмент разделяемой памяти, пристыковываемый таким способом, может быть в разных процессах пристыкова к разным адресам. Поэтому все указатели в области разделяемой памяти должны быть не абсолютными, а относительными (как правило относительно адреса начала сегмента).

Случайно не на обращении ли к "a" вылетает?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.