Brasero calculates wrong checksum after burn ISO to CD

Bug #385540 reported by MestreLion
28
This bug affects 6 people
Affects Status Importance Assigned to Milestone
brasero (Ubuntu)
Undecided
Unassigned

Bug Description

Binary package hint: brasero

After burning a CD from an ISO file, Brasero reports an error saying checksum from ISO file and burned CD do not match. ("Some files may be corrupted on the disc").

However, CD is fine and all files were burned correctly. I did a manual verification using md5sum on both the ISO and on the burned CD, and they DO match.

Steps to reproduce:
- In Nautilus, right-click an .ISO file (i used ubuntu-9.04-desktop-i386.iso) and select "Write to Disc".
- Click "Burn"

After recording, it says "Some files may be corrupted on the disc".

Opening up the logfile, near the end theres the line that triggered the error:

BraseroChecksumImage Setting new checksum (type = 2) 2602036235674bdd37d297dadd7547dd (66fa77789c7b8ff63130e5d5a272d67b before)

Steps to Verify:
- Check the ISO hash: md5sum ubuntu-9.04-desktop-i386.iso
( it says 66fa77789c7b8ff63130e5d5a272d67b, same checksum as in Ubuntu documentation https://help.ubuntu.com/community/UbuntuHashes )
- Check the CD hash: md5sum /media/cdrom (again, 66fa77789c7b8ff63130e5d5a272d67b)
- Create ISO from CD using Brasero, and then check md5sum: 66fa77789c7b8ff63130e5d5a272d67b

So Brasero, for some reason, is not calculating the burned CD checksum correctly.

I tried with the same ISO twice, and then with another ISO (the one i am attaching). The 3 discs were OK but in all Brasero reported this error.

PS: This is my 1st bug report, im new to Ubuntu, so I apologize theres anything incorrect in the report format.

ProblemType: Bug
Architecture: i386
DistroRelease: Ubuntu 9.04
ExecutablePath: /usr/bin/brasero
NonfreeKernelModules: nvidia
Package: brasero 2.26.1-0ubuntu1
ProcEnviron:
 LANG=pt_BR.UTF-8
 SHELL=/bin/bash
SourcePackage: brasero
Uname: Linux 2.6.28-11-generic i686

Revision history for this message
MestreLion (mestrelion) wrote :
Revision history for this message
MestreLion (mestrelion) wrote :

After studying the log and doing some tests, i think ive spotted the error: Brasero is passing the wrong number of sectors to the readom command (that looks like its the one brasero uses to read the burned cd to calculate the checksum).

These log lines should says it all (some lines were omitted for the sake of clarity):

BraseroChecksumImage Starting checksuming file /dados/Install/Linux/ubuntu-9.04-desktop-i386.iso (size = 732909568)
BraseroChecksumImage Setting new checksum (type = 2) 66fa77789c7b8ff63130e5d5a272d67b ( before)
BraseroWodim stdout: Track 01: data 698 MB
BraseroWodim stdout: Total size: 802 MB (79:31.54) = 357866 sectors
BraseroWodim stdout: Lout start: 803 MB (79:33/41) = 357866 sectors
BraseroWodim stdout: Current Secsize: 2048
BraseroWodim stdout: Blocks total: 359846 Blocks current: 359846 Blocks remaining: 1980
BraseroWodim stdout: Track 01: 698 of 698 MB written (fifo 100%) [buf 100%] 8.1x.
BraseroWodim stdout: Track 01: Total bytes read/written: 732909568/732909568 (357866 sectors).

So far so good: ISO checksum and size are correct, and 732909568 bytes / 2048 b/s = 357866 sectors. Media has 359846 sectors in total, so 359846 - 357866 = 1980 sectors wont be used. Track data is 698 MB (698.95 actually), and they are all sucessfully written to disc.

Then surprisingly, a few lines latter brasero says:

BraseroChecksumImage Starting checksum generation live (size = 732905472)
BraseroReadom reading 1 from sector 0 to 357864
BraseroReadom got varg:
 readom
 dev=/dev/sr0
 -nocorr
 -noerror
 -sectors=0-357864
 -f=-
BraseroReadom stderr: Capacity: 357866 Blocks = 715732 kBytes = 698 MBytes = 732 prMB
BraseroReadom stderr: end: 357864
BraseroReadom stderr: addr: 357864
BraseroReadom stderr: Read 715728.00 kB at 5110.6 kB/sec.
BraseroChecksumImage Setting new checksum (type = 2) 2602036235674bdd37d297dadd7547dd (66fa77789c7b8ff63130e5d5a272d67b before)

size = 732905472 ????

Why 732905472 ? Thats 4096 bytes less than the ISO image! Thats 357864 sectors, 2 less than it should. And, since only a partial data was read from CD, checksum was obvioulsy different then original

I did a few tests with readom, using the same parameter template as used by brasero:

readom dev=/dev/sr0 -nocorr -noerror -sectors=0-357864 -f=- | md5sum
2602036235674bdd37d297dadd7547dd -

readom dev=/dev/sr0 -nocorr -noerror -sectors=0-357866 -f=- | md5sum
66fa77789c7b8ff63130e5d5a272d67b -

Both values matches the ones found in the log. So md5sum of burned CD is correctly calculated on an incorrect, 4K smaller data. Thats why brasero says checksums do not match.

Looks like bug has nothing to do with wodin, readom, or md5 calculation. Seems to be a brasero issue iself, passing a wrong parameter. Shoudnt it use the actual ISO size instead ?

Last but not least, ISO was read from an NTFS partition that was mounted in /dados. Does it matter?

Hope this helps!

PS: Here the log for this example. Previous post log is from another ISO (but had the same error, brasero passed 2 sectors less then actual iso size)

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in brasero (Ubuntu):
status: New → Confirmed
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers