-
Notifications
You must be signed in to change notification settings - Fork 0
Progressbar signal handler for SIGWINCH causes system calls to be interrupted #30
Copy link
Copy link
Open
Description
What steps will reproduce the problem?
1. Install the latest version of euca2ools 3.0.0 available here:
https://github.com/eucalyptus/euca2ools/tree/requestbuilder
2. Use the euca-bundle-vol tool (which uses progressbar)
3. Attempt to resize the terminal window during tarball bundling
What is the expected output? What do you see instead?
I expect to see the progressbar resized properly, but instead an IOError
exception is raised with EINTR, since the write system call is being
interrupted by the signal handler for SIGWINCH.
Here's the exception output below:
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
tune2fs 1.42.3 (14-May-2012)
done
Syncing volume contents... done
euca-bundle-vol: error: Interrupted system call
Exception in thread Thread-2: | 718.55 MB 35.40 MB/s ETA:
Traceback (most recent call last):
File "/usr/lib64/python2.7/threading.py", line 551, in __bootstrap_inner
self.run()
File "/usr/lib64/python2.7/threading.py", line 504, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/lib/python2.7/site-packages/euca2ools-3.0.0_alpha6-py2.7.egg/euca2ools/commands/bundle/bundle.py", line 187, in _add_fileobj_to_tarball
tarball.close()
File "/usr/lib64/python2.7/tarfile.py", line 1776, in close
self.fileobj.write(NUL * (BLOCKSIZE * 2))
File "/usr/lib64/python2.7/tarfile.py", line 471, in write
self.__write(s)
File "/usr/lib64/python2.7/tarfile.py", line 479, in __write
self.fileobj.write(self.buf[:self.bufsize])
IOError: [Errno 32] Broken pipe
Exception IOError: (32, 'Broken pipe') in <bound method _Stream.__del__ of
<tarfile._Stream instance at 0x29673f8>> ignored
Bundling image 100% |======================| 10.00 GB 503.30 MB/s Time: 0:00:21
euca-bundle-vol: error:
[root@i euca2ools]#
What version of the product are you using? On what operating system?
I'm using progressbar 0.9.8 on CentOS 6.4
Please provide any additional information below.
I've attached a patch that fixes the issue. After installing the signal
handler, progressbar should then set the SA_RESTART flag so that system calls
are restarted after the signal handler executes.
Original issue reported on code.google.com by mspauldi...@gmail.com on 16 May 2013 at 4:46
Attachments:
Reactions are currently unavailable