Comment 2 for bug 385540

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)