Charles-Francois Natali <[email protected]> added the comment: > Martin v. Löwis <[email protected]> added the comment: > > I wonder why reading from /dev/urandom has a loop in the first place, though > - isn't it guaranteed that you can read as many bytes as you want in one go? > This goes back to #934711, and apparently, even the original patch had the > loop - for reasons that got never questioned. >
I found surprising that a read from /dev/urandom would be uninterruptible, so I digged a little, and found this mail from 1998: [patch] fix for urandom read(2) not interruptible http://marc.info/?l=bugtraq&m=91495921611500&w=2 "It's a bug in random.c that doesn' t check for signal pending inside the read(2) code, so you have no chance to kill the process via signals until the read(2) syscall is finished, and it could take a lot of time before return, if the buffer given to the read syscall is very big..." I've had a quick look at the source code, and indeed, read(2) from /dev/urandom can now be interrupted by a signal, so looping seems to be justified. > ---------- > nosy: +loewis > status: pending -> open > > _______________________________________ > Python tracker <[email protected]> > <http://bugs.python.org/issue10824> > _______________________________________ > ---------- _______________________________________ Python tracker <[email protected]> <http://bugs.python.org/issue10824> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com
