Potential deadlock on mbuf

From: Alexandre Martins <alexandre.martins_at_netasq.com>
Date: Mon, 2 Apr 2012 18:21:37 +0200
Dear,

I have currently having troubles with a basic socket stress.

The socket are setup to use non-blocking I/O.

During this stress-test, the kernel is running mbuf exhaustion, the goal is to 
see system limits.

If the program make a write on a socket during this mbuf exhaustion, it become 
blocked in "write" system call. The status of the process is "zonelimit" and 
whole network I/O fall in timeout.

I have found the root cause of the block  :
http://svnweb.freebsd.org/base/head/sys/kern/uipc_socket.c?view=markup#l1279

So, the question is : Why m_uiotombuf is called with a blocking parameter 
(M_WAITOK) even if is for a non-blocking socket ?

Then, if M_NOWAIT is used, maybe it will be usefull to have an 'ENOMEM' error.

Regards

-- 
Alexandre Martins
Received on Mon Apr 02 2012 - 14:21:39 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:25 UTC