[pypy-issue] Issue #2166: Infinite loop in readinto (2.6.1) (pypy/pypy)
Ionel Cristian Mărieș
issues-reply at bitbucket.org
Tue Oct 20 00:17:19 CEST 2015
New issue 2166: Infinite loop in readinto (2.6.1)
https://bitbucket.org/pypy/pypy/issues/2166/infinite-loop-in-readinto-261
Ionel Cristian Mărieș:
The case is not simple bug alas, I could not figure out a simple way to repro.
```python
import os
import signalfd, signal
fd = signalfd.signalfd(-1, [signal.SIGUSR1], signalfd.SFD_CLOEXEC | signalfd.SFD_NONBLOCK)
fh = os.fdopen(fd, 'rb')
signalfd.read_siginfo(fh)
```
You need to `pip install signalfd` - it uses cffi (source: https://github.com/ionelmc/python-signalfd/blob/master/src/signalfd/__init__.py#L90-L99)
Strace output looks like
```
signalfd4(-1, [USR1], 8, O_NONBLOCK|O_CLOEXEC) = 3
fstat(3, {st_mode=0600, st_size=0, ...}) = 0
fcntl(3, F_GETFL) = 0x802 (flags O_RDWR|O_NONBLOCK)
fstat(3, {st_mode=0600, st_size=0, ...}) = 0
read(3, 0x41763f0, 128) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763ef, 129) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763ee, 130) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763ed, 131) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763ec, 132) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763eb, 133) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763ea, 134) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e9, 135) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e8, 136) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e7, 137) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e6, 138) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e5, 139) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e4, 140) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e3, 141) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e2, 142) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e1, 143) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763e0, 144) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763df, 145) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763de, 146) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763dd, 147) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763dc, 148) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763db, 149) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763da, 150) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d9, 151) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d8, 152) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d7, 153) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d6, 154) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d5, 155) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d4, 156) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d3, 157) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d2, 158) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d1, 159) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763d0, 160) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763cf, 161) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763ce, 162) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763cd, 163) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763cc, 164) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763cb, 165) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763ca, 166) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763c9, 167) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763c8, 168) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763c7, 169) = -1 EAGAIN (Resource temporarily unavailable)
read(3, 0x41763c6, 170) = -1 EAGAIN (Resource temporarily unavailable)
```
The offset keeps incrementing. Does not happen on 2.6.0.
More information about the pypy-issue
mailing list