Update of /src/master/dx/src/uipp/dxui In directory opendx.watson.ibm.com:/tmp/cvs-serv11102/dxui
Modified Files: ImageNode.C ImageNode.h Node.C Node.h ToggleNode.C ToggleNode.h Log Message: Change PacketIF so that it gives priority to reads from dxexec over writes to dxexec. The mechanism for this is storing outgoing messages in a fifo Q whenever a writer detects that there is input from dxexec available at the socket. Tests for this fix are 1) setting DX_SOCKET_BUFSIZE to a small value such as 1 or 2 or a few K. 2) running nets from http://www.mcell.psc.edu/DReAMM and http://www.mcell.psc.edu/dreammx. (I hope) All places within dxui that use the socket connection to dxexec now go through PacketIF. No one should ever use DXD_NON_UNIX_SOCKETS except for PacketIF. N.B. The deadlock problem is spackled over but not Fixed. In other words, it can still happen. It's just less likely to happen. It can't be completely fixed as long as calls such as fwrite and fputs can block. The right combination of processor speed and cosmic alignment will cause a deadlock. Still, I suspect it won't be a big problem any more. P.S. I hope the new code is cross-platform and helps out the pc as well.