Unreliable SunOS IPC ?

Gil Tene devil at TECHUNIX.BITNET
Mon Jul 9 08:42:14 AEST 1990


How can I put up RELIABLE communications between two processes under SunOS
4.0.3 ?  I know, I know, signals, sockets, SysV IPC (message queues and
semaphores).... BUT :

I have been trying to synchronize two processes using several different
mechanisms, especialy signals/pause(), message queues, and combinations of
both. All methods SEEM to work, but I occasionaly get deadlocked using ANY
one of them. It seems that either pause() "looses" a signal (even though
the signal handler is executed) sometimes, and that message queues
occasionally "loose" messages. This happens under heavy load, but I have
isolated specific cases, and I have specifically seen one process send a
message, while another stays on waiting for it, and never gets it, as well
as similar behavior with signals/pause().

I am under the impression that IPC under SunOS may not BE reliable, and
may fail under heavy load conditions. After all, when I read any of the
manuals, it just describes functionality, but never says anything about
reliability... Is this TRUE ?!!!

Has anyone got a "totaly fool proof" process sync. set-up written using
ANY of the SunOS tools? are there any Sun guys out there who care to
comment ?

Does anyone out there know of "promised" behaviour rules of signals and/or
message queues. Rules like :

-       "pause() will ALWAYS return if a signal occured."
-       "When getting a signal, the signal handler
         will ALWAYS execute before the pause() function exits."
-       "msgrcv() will ALWAYS return when a message
         is available on entry , or at any later time."

I would be more than glad to retract any and all of these "accusations" if
someone points out the error of my ways. I am looking for a reliable
solution, that's all...

AdvThanks,

| Gil Tene                      "Some days it just doesn't pay     |
| devil at techunix.technion.ac.il   to go to sleep in the morning."  |



More information about the Comp.sys.sun mailing list