[pypy-issue] [issue867] urllib2 on pypy can leak fd's

Claudio tracker at bugs.pypy.org
Tue Jun 4 18:50:29 CEST 2013


Claudio <klaussfreire at gmail.com> added the comment:

I'm experiencing this in 2.0.2.

A simple test, having a web server in localhost answering this request:

req = """balblabla"""
url = "http://localhost:8000/blah?whatever=1"
r = urllib2.Request(url, req)
u = urllib2.urlopen(r)
v = u.read()
u.close()
os.system("ls -alh /proc/%d/fd/*" % os.getpid())

I get:

>>>> os.system("ls -alh /proc/%d/fd/*" % os.getpid())
lrwx------ 1 claudiofreire users 64 Jun  4 13:42 /proc/23471/fd/0 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:42 /proc/23471/fd/1 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:42 /proc/23471/fd/2 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:42 /proc/23471/fd/3 ->
socket:[1072689]
lrwx------ 1 claudiofreire users 64 Jun  4 13:42 /proc/23471/fd/5 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:42 /proc/23471/fd/6 -> /dev/pts/1
0


However, if I don't use a payload, I have no leak:

>>>> import urllib2
>>>> u = urllib2.urlopen("http://www.google.com.ar")
>>>> v = u.read()
>>>> u.close()
>>>> import os
>>>> os.system("ls -alh /proc/%d/fd/*" % os.getpid())
lrwx------ 1 claudiofreire users 64 Jun  4 13:49 /proc/23570/fd/0 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:49 /proc/23570/fd/1 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:49 /proc/23570/fd/2 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:49 /proc/23570/fd/5 -> /dev/pts/1
lrwx------ 1 claudiofreire users 64 Jun  4 13:49 /proc/23570/fd/6 -> /dev/pts/1
0

CPython 2.7.3 does not exhibit this issue

----------
nosy: +klauss
status: resolved -> chatting

________________________________________
PyPy bug tracker <tracker at bugs.pypy.org>
<https://bugs.pypy.org/issue867>
________________________________________


More information about the pypy-issue mailing list