Date: Sat, 29 May 1999 01:46:44 -0700 (PDT) From: Matthew Dillon <dillon@apollo.backplane.com> To: hackers@FreeBSD.ORG Subject: Possible race in pipe device driver, esp on multi-cpu machines. Message-ID: <199905290846.BAA29926@apollo.backplane.com>
next in thread | raw e-mail | index | archive | help
A friend of mine upgraded one of his machines to a duel-cpu box and upgraded the OS to -STABLE, and he noticed that his backups were being corrupted. The corruption appears to occur when he transfers huge gzip'd tar files over a 100BaseTX network: rsh remote -n "cat remotefile" > localfile ssh remote -n "cat remotefile" > localfile rcp remote:remotefile localfile scp remote:remotefile localfile The remotefile in this case is a huge 192MB gzip'd tar file. Portions of the file get corrupted - generally the corruption consists of a small sequence of 8 or so bytes at a random offset in the file being repeated twice, destroying data that should have been sent instead. The corrupted file winds up being the same size as the original file, but with occassional repeating patterns. Through experimentation we determined that it was NOT the TCP connection, programs run, or filesystem that are introducing the corrupted data. I believe that the problem is situated in the pipe device driver. It should also be noted that one of my friend's machines is a duel-cpu machine. Both are running FreeBSD-STABLE. If I replace the "cat" in the rsh/ssh with a "dd bs=4k", the corruption goes away. I think the problem is occuring on the duel-cpu machine by creating a window of opportunity due to the way processes are scheduled that is not being protected by the pipe device. I seem to recall that the pipe device tries to optimize certain situations when a reader is blocked waiting for input. This code is my primary suspect at the moment. We are attempting to reproduce the problem with a smaller dataset, but if anyone is hot on the pipe code in the kernel and can give it a once-over we may be able to find the bug more quickly. -Matt Matthew Dillon <dillon@backplane.com> To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199905290846.BAA29926>