Ничего удивительно в SIGSEGV не вижу. Вы пытаетесь выполнить код в
своём адресном пространстве с какого-то произвольного адреса.
Вижу несколько логических ошибок в Вашем коде.
1. По умолчанию селектор сегмента кода любого процесса в QNX4 имеет номер 5 или 7 (в зависимости от уровня привилегий, т.е. ключа -T при сборке). Смысла в передаче такой информации в сообщении нет.
2. Указатель на функцию надо делать следующим образом:
getbuf = MK_FP(msg.seg, msg.offset);
3. Судя по названию функции, которую Вы хотите вызвать
getbuf(), Вы хотите получить какие-то данные из другого процесса. Таким образом Вы этого не добьётесь. QNX это не DOS, в котором все процессы находятся в одном адресном пространстве и выполняются в реальном режиме. В QNX (как и в подавляющем большинстве современных операционных систем) каждый процесс выполняется в своём собственном адресном пространстве (код и данные).
Предлагаю ознакомиться с механизмом разделяемой памяти (shared memory) в QNX4. Подозреваю, что это именно то, что Вам нужно.