Doesn’t µTorrent check hashes?
These days, I’m preparing my »Linux distributions for beginners« talk I’m going to give at CLT 2007. This means that I download a bunch of distro DVDs, burn them and install Linux from them to see how they behave. Having made some bad experiences with broken HTTP downloads last year, I’m now using BitTorrent exclusively, because it’s extensively checksummed and every broken fragment is downloaded again until it is OK.
It just so happened that I switched to µTorrent a few weeks ago. Before that, I used Azureus, which is written in Java, takes ages to load, eats up quite some resources and crashes at least twice a week. (Yes, you read this correctly: Although it’s written in Java, it crashes. Hard. With a General Protection Fault, in a different module each time. Don’t ask me.) µTorrent solved these problems all at once. Granted, the UI is even more cryptic than Azureus’, but that’s a fair price for stability.
Yesterday, the »distro of the day« should have been openSUSE 10.2. I started the installation, but after 20 minutes, it suddenly complained that the OpenOffice.org package is »not available« on the installation media. The »Details …« button revealed that the integrity check failed. Phew. Anyway, I chose to »Ignore« the problem instead of »Abort«ing the installation, but the installer decided to abort the installation anyway and reverted to the good old SuSE linuxrc
text-mode installer. The »check CD« (sic!) option there also confirmed that the DVD was not OK. So I rebooted the machine to look what’s going on. Since the installer killed the GRUB stage2 from my previous Fedora Core 6 installation, I had to type the boot commands by hand (root (hd0,1)
; chainloader +1
; boot
… you know the drill) – at least, stage1.5 was intact!
Analysis
There were only three possible reasons for the fault:
- a read/write problem with the DVD-R I burned
- the ISO I downloaded was broken, because µTorrent messed up
- the ISO I downloaded was broken, because the openSUSE guys messed up
To check for reason 1, I ran a MD5 check of the ISO file. (Which I normally won’t do, since BitTorrent ensures correct downloads, doesn’t it?) Indeed, the MD5 sum didn’t match the one specified at the openSUSE website! So the download must have been busted in the first place. Over night, I had my computer download the ISO again – by Azureus this time. And guess what, the MD5 sum was correct this time. So reason 3 was out of the game, too. It’s just that my µTorrent-downloaded file was corrupt.
Now how’s that? I don’t know. Either I just hit the 1-in-18-quintrillion-chance for a transmission error that accidentally matches the original hash, or µTorrent is simply broken. Since I don’t really believe in the former case, I came to the conclusion that the latter must be true. So from now on, I’m downloading my torrents with Azureus again. I’d rather restart the application every third day than having to re-download every third file.
Would be more fair before anouncing the final sentence, to give uTorrent one more chance. If you base your decision on “1-in-18-quintrillion-chance for a transmission error that accidentally matches the original hash”, that means that the same error could also happen to the bloated Azureus. So to be able to confirm the problem you need one more test. If you never going to get into that problem anymore then may be it was a rare combination of circumstances, which could probably happen to any other torrent app. Unless you do that there is no point to mislead others who otherwise may give uTorrent a try.
P.S. I use uTorrent a lot, along with BitComet and never had run into problems like that. I’m sure if that problem would exist for real, then it would be already reported and fixed. And even if you try it again and hit the same bump, it would be more useful to report it to the author. After all, our feedback is one of the factors that make a program to be what it is.
If you read my post carefully, you see that I abandoned µTorrent because I don’t believe in a hash-correct transmission error. I rather believe that µTorrent somehow interferes with my virus scanner or something – I don’t know. But I do know one thing: I downloaded hundreds of Gigabytes with Azureus without any problems, but after less then ten Gigabytes with µTorrent, I ran intro problems.