New submission from STINNER Victor <vstin...@python.org>:

The select.epoll.unregister(fd) method currently ignores EBADF error if the 
file descriptor fd is invalid.

I'm surprised by this undocumented behavior:
https://docs.python.org/dev/library/select.html#select.epoll.unregister

This behavior may lead to bugs if the file descriptor number has been recycled 
in the meanwhile. I'm not sure that it's a good idea to silently ignore the 
error.

See bpo-18748 for a similar issue: "io.IOBase destructor silence I/O error on 
close() by default".

Note: The method also ignores EBADF error if the epoll file descriptor has been 
closed.

The behavior is as old as the implementation of select.epoll, bpo-1657:

commit 0e9ab5f2f0f907b57c70557e21633ce8c341d1d1
Author: Christian Heimes <christ...@cheimes.de>
Date:   Fri Mar 21 23:49:44 2008 +0000

    Applied patch #1657 epoll and kqueue wrappers for the select module
    The patch adds wrappers for the Linux epoll syscalls and the BSD kqueue 
syscalls. Thanks to Thomas Herve and the Twisted people for their support a
nd help.
    TODO: Finish documentation documentation

Thomas Herve wrote a first implementation in bpo-1675118, but it seems like it 
was Christian Heimes who wrote the unregister() method.

----------
components: Library (Lib)
messages: 359481
nosy: christian.heimes, vstinner
priority: normal
severity: normal
status: open
title: select.epoll.unregister(fd) should not ignore EBADF
versions: Python 3.9

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue39239>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to