Hello, I have a query related to sockets. I have created a socket between the tasks (T1 & T2) running on the same board and my creation code from T1 is follows. mbxSock = socket(AF_INET, SOCK_STREAM,0) int reuse = 1; setsockopt(mbxSock, SOL_SOCKET, SO_REUSEADDR, (char *) &reuse, sizeof(int)); int flag = 1; setsockopt(mbxSock, IPPROTO_TCP, TCP_NODELAY, (char *) &flag, sizeof(int)); int bufferSize = 16384; setsockopt(mbxSock,SOL_SOCKET,SO_SNDBUF,(char *)&bufferSize,sizeof(int)); My task T2 listens to this internal socket from T1 and some other external sockets also from different boards(using select call). When my application is runnning, Task T1 is pending on a semaphore when it was trying to send a message to this socket. Here is the callstack of task T1 0x00ccfb4c -> send + 0x4c 0x00c7b008 -> bsdSend + 0xd0 0x00ce2b58 -> sosend + 0x2a4 0x00c77db4 -> sbwait + 0x2c 0x00c78b70 -> ksleep + 0x68 0x00cb8904 -> semTake + 0x140 0x00cb7d7c -> semBTake + 0x190 I thought other task T2 is not reading the messages from the socket and that is the reason task T1 is not able to send message and waiting. But if I observe the task T2 call stack, the last call is a select call (Does it mean no messages are available in any of it's sockets (internal + external)). Can some body please tell me what is happening in the above callstack and why task T1 is waiting for a semaphore and when the above sequence of calls can come. Thanks, Nari.