libev epoll and EPOLLRDHUP

Chaliha, Sayan sayan.chaliha at
Thu Jun 13 08:24:55 CEST 2013

Hi Marc,

1. I'm using Ubuntu 12.04 LTS (bare-bones kernel and very few modules). uname -a: Linux ATCA-7311 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
2. Here's my observation:
	a. I have a transparent HTTP proxy server
	b. The proxy is heavily loaded with connections (around 3 Gbps of data)
	c. On any side  of the proxy if a client closes a connection, I don't get a read (or write) event for the last connection that went down. That event 	    comes only when a new connection is established. Off late testers are reporting that more than ten or eleven connection close events are being 	    missed with epoll enabled.
	d. With poll it works absolutely fine: For every connection that is closed, I immediately get an event.

Thank you for your help!

Warm regards,

-----Original Message-----
From: Marc Lehmann [mailto:schmorp at] 
Sent: Thursday, June 13, 2013 5:01 AM
To: Chaliha, Sayan
Cc: libev at
Subject: Re: libev epoll and EPOLLRDHUP

On Wed, Jun 12, 2013 at 05:19:31PM +0530, "Chaliha, Sayan" <sayan.chaliha at> wrote:
> I'd like a notification from libev when a TCP connection goes down. 
> This works fine with poll backend, but with epoll backend it doesn't. 
> My guess is because EPOLLRDHUP is not being handled. Could I have a 
> patch for this please?

Hi - this doesn't make much sense: libev already notifies you when a tcp connection goes down (for both read and write watcher depending on which half is closed). It makes no obvious sense for libev to handle EPOLLRDHUP in any way.

Could you describe:

- what behaviour you are seeing.
- what behaviour do you expect instead.
- what exactly you think should be changed.
- how poll differs from epoll in generated signals.

Also, since epoll is extremely badly designed and implemented, maybe you are hitting a bug in your kernel - which kernel version do you see the beahviour with?

                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_    
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      schmorp at
      -=====/_/_//_/\_,_/ /_/\_\

More information about the libev mailing list