ftplib throws: IndexError: tuple index out of range

Antoon Pardon antoon.pardon at rece.vub.ac.be
Sun Feb 14 13:10:16 EST 2016


Op 14-02-16 om 14:40 schreef Peter Otten:
> Antoon Pardon wrote:
> 
>> I have written a small backup program, that uses ftplib to make
>> remote backups. However recentely the program starts to regularly
>> raise IndexErrors, as far as I can see the problem is in socket.py
>> Can anyone shed some light?
>>
>> This is the traceback:
> 
> [...]
> 
>>   File "/usr/lib/python2.7/socket.py", line 478, in readline
>>     if e.args[0] == EINTR:
>> IndexError: tuple index out of range
> 
> The offending line seems to be part of
> 
>                 try:
>                     data = self._sock.recv(self._rbufsize)
>                 except error, e:
>                     if e.args[0] == EINTR:
>                         continue
>                     raise
> 
> 
>> Locals by frame, innermost last
> 
> [...]
> 
>> Frame readline in /usr/lib/python2.7/socket.py at line 478
>>                  buf = <cStringIO.StringO object at 0x7ff8c5d40298>
>>              buf_len = 0
>>                    e = timeout()
>>                 self = <socket._fileobject object at 0x7ff8c7b75b50>
>>                 size = 8193
> 
> It looks like the actual error is socket.timeout which is probably raised 
> from somewhere inside the stdlib without args.

I think I know what is going on. I have my own timeout mechanism at work
here, that works with signals and alarm. When the SIGALRM fires I just
raise the socket.timeout without arguments, which then causes the problem.

I defined my own timeout exception class and now raise that and the problem
disappeared. Thanks for the extra pair of eyes.

-- 
Antoon Pardon.



More information about the Python-list mailing list