Hello,
by now I’ve created a huge application with many different treads and
processes; they use synchronizing via condvars, messages and pulses. There
is a “EMT trap” that occures at a certain stage of my application.
Does anybody know when this trap gets called (possible error sources) or
does anybody have a link to specific information about it?
Thank you.
Nnamdi
“Nnamdi Kohn” <nnamdi.kohn@web.de> wrote in message
news:c3f53l$cvf$1@inn.qnx.com…
Hello,
by now I’ve created a huge application with many different treads and
processes; they use synchronizing via condvars, messages and pulses. There
is a “EMT trap” that occures at a certain stage of my application.
Does anybody know when this trap gets called (possible error sources) or
does anybody have a link to specific information about it?
You’re probably getting hit with a SIGDEADLK (same signo as SIGEMT). When a
mutex is owned/locked, and then unmapped, any other threads blocked waiting
on that mutex will get woken up either with a registered event, or this
signal.
\
Cheers,
Adam
With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <pschon@baste.magibox.net>
\
Cheers,
Adam
With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <pschon@baste.magibox.net>
Thanks, Adam.
After getting hit by this trap, how can I clean up the QNX system
completely, so that I might be able to restart the concerning processes
again? Currently, QNX hangs after this EMT trap so that I have to restart
the whole QNX system after each application start. Which QNX functions would
help do the cleaning up?
Regards.
Nnamdi
“Adam Mallory” <amallory@qnx.com> schrieb im Newsbeitrag
news:c3f7ep$f73$1@inn.qnx.com…
“Nnamdi Kohn” <> nnamdi.kohn@web.de> > wrote in message
news:c3f53l$cvf$> 1@inn.qnx.com> …
Hello,
by now I’ve created a huge application with many different treads and
processes; they use synchronizing via condvars, messages and pulses.
There
is a “EMT trap” that occures at a certain stage of my application.
Does anybody know when this trap gets called (possible error sources) or
does anybody have a link to specific information about it?
You’re probably getting hit with a SIGDEADLK (same signo as SIGEMT). When
a
mutex is owned/locked, and then unmapped, any other threads blocked
waiting
on that mutex will get woken up either with a registered event, or this
signal.
\
Cheers,
Adam
QNX Software Systems Ltd.
[ > amallory@qnx.com > ]
With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <> pschon@baste.magibox.net
\
Cheers,
Adam
QNX Software Systems Ltd.
[ > amallory@qnx.com > ]
With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <> pschon@baste.magibox.net
“Nnamdi Kohn” <nnamdi.kohn@web.de> wrote in message
news:c3pdnq$3dh$1@inn.qnx.com…
Thanks, Adam.
After getting hit by this trap, how can I clean up the QNX system
completely, so that I might be able to restart the concerning processes
again? Currently, QNX hangs after this EMT trap so that I have to restart
the whole QNX system after each application start. Which QNX functions
would
help do the cleaning up?
QNX shouldn’t be hanging - are you sure it isn’t a thread running in a tight
loop at a high priority (especially now that some of your sync objects are
probably in wierd states)? You can start a shell with a high priority
(higher than all other threads) on a console before you start your apps to
see whats going on.
If QNX is actually hanging, can you post the architecture,board,QNX version
and test case causing the issue please.
\
Cheers,
Adam
With a PC, I always felt limited by the software available.
On Unix, I am limited only by my knowledge.
–Peter J. Schoenster <pschon@baste.magibox.net>