QNX4 ReceiveMx strange malfunction

Hello,

I have a strange behavior of my processes under QNX 4.25.

I try to explain my application and this malfunction.

I have a process which is waiting on ReceiveMx, and periodically he receives
either a message or a proxy from a timer or from an interrupt.
The data attached with the proxy are the same type as the first part of the
message, in fact is just an header ( 4 long words ) . The header contains an
message id from a limited set ( 1 … N )

My application runs 24h a day, and the process receives hundred of thousand
messages/proxy. and suddenly, he receives a incoherency message (a wrong
header) .
Firstly I have looked for in the sender code , but he transmits always the
same header. The data attached with my proxys are constant ( by QNX
construction ). If I analyse the datas in the header there are from on old
message ( the data part of a message ) and the most curious is the value
returned by the ReceiveMx call , in this case it’s also an old data and not
an error code nor the PID of the sender ( process or proxys ) !

To get these informations I have build a circular buffer which stores the
last 10 headers received, the PID of the sender and a message receive
counter. Then i write the buffer to a file when I detect a bad header and
stop the process. These test and store operations are directly after the
ReceiveMx call.

Has anyone met a similar problem ?

Philippe

philippe Elskens wrote:

Hello,

I have a strange behavior of my processes under QNX 4.25.

I try to explain my application and this malfunction.

I have a process which is waiting on ReceiveMx, and periodically he
receives either a message or a proxy from a timer or from an
interrupt. The data attached with the proxy are the same type as the first
part
of the message, in fact is just an header ( 4 long words ) . The
header contains an message id from a limited set ( 1 … N )

My application runs 24h a day, and the process receives hundred of
thousand messages/proxy. and suddenly, he receives a incoherency
message (a wrong header) .
Firstly I have looked for in the sender code , but he transmits
always the same header. The data attached with my proxys are constant
( by QNX construction ). If I analyse the datas in the header there
are from on old message ( the data part of a message ) and the most
curious is the value returned by the ReceiveMx call , in this case
it’s also an old data and not an error code nor the PID of the sender
( process or proxys ) !
To get these informations I have build a circular buffer which stores
the last 10 headers received, the PID of the sender and a message
receive counter. Then i write the buffer to a file when I detect a
bad header and stop the process. These test and store operations are
directly after the ReceiveMx call.

Has anyone met a similar problem ?

Philippe

You don’t seem to be getting much response here. You might try posting in
the qnx.qnx4 newsgroup.

I have never seen the problem you describe, but I do have one thought about
this. Is it possible you are having a hardware problem? If your
inter-process communication is over a network, then there is the possibility
of data corruption in the network cards or in the data transfer to and from
the network cards.

If both processes are on the same computer, it may be possible that there is
a hardware problem in the memory that causes occasional data corruption.
You might try a different computer to see whether or not the problem
persists.


Bert Menkveld
P. Eng.
B&E Technologies
bert@betech.biz
Ph: 519-669-0950

“Bert Menkveld” <bert@betech.biz> wrote in message
news:eer8ts$bcn$1@inn.qnx.com

philippe Elskens wrote:
Hello,

I have a strange behavior of my processes under QNX 4.25.

I try to explain my application and this malfunction.

I have a process which is waiting on ReceiveMx, and periodically he
receives either a message or a proxy from a timer or from an
interrupt. The data attached with the proxy are the same type as the
first part
of the message, in fact is just an header ( 4 long words ) . The
header contains an message id from a limited set ( 1 … N )

My application runs 24h a day, and the process receives hundred of
thousand messages/proxy. and suddenly, he receives a incoherency
message (a wrong header) .
Firstly I have looked for in the sender code , but he transmits
always the same header. The data attached with my proxys are constant
( by QNX construction ). If I analyse the datas in the header there
are from on old message ( the data part of a message ) and the most
curious is the value returned by the ReceiveMx call , in this case
it’s also an old data and not an error code nor the PID of the sender
( process or proxys ) !
To get these informations I have build a circular buffer which stores
the last 10 headers received, the PID of the sender and a message
receive counter. Then i write the buffer to a file when I detect a
bad header and stop the process. These test and store operations are
directly after the ReceiveMx call.

Has anyone met a similar problem ?

Philippe

You don’t seem to be getting much response here. You might try posting in
the qnx.qnx4 newsgroup.

I have never seen the problem you describe, but I do have one thought
about this. Is it possible you are having a hardware problem?

I would vote for that as well, or a bug in your software.

If your inter-process communication is over a network, then there is the
possibility of data corruption in the network cards or in the data
transfer to and from the network cards.

If both processes are on the same computer, it may be possible that there
is a hardware problem in the memory that causes occasional data
corruption. You might try a different computer to see whether or not the
problem persists.


Bert Menkveld
P. Eng.
B&E Technologies
bert@betech.biz
Ph: 519-669-0950