I/O Error Mystery

I burned identical raw encrypted data to three cds using my new external Toshiba drive. My internal IBM read only drive does not get an I/O Error when reading in Circumstance #1, but does get an I/O Error in Circumstance #2. But, the Toshiba drive can do both circumstances without an error.

(python scripting used in example)

Circumstance #1 (No I/O Error)

f = open("/dev/cdrom", "r")
data = f.read(100)
f.close()

Circumstance #2 (Gets I/O Error)

f = open("/dev/cdrom", "r")

# I have over simplified the seeking here.  The real program is a decryption program and seeks all over the drive.

f.seek(50)
data = f.read(50)

f.seek(0)
data += f.read(50)

f.close()

Why can my IBM read-only-drive read the data if I ask for it all at once, but if I skip around and read random ranges of that data, it gives me an error always at the same range of data I try to read on all three identical burned cd's? FYI: The Toshiba decrypts the data perfectly, so it's not bad seek in my programming.

In case you are wondering why I am doing this it is custom encrypted data that I burned to a cd. This is a link to the python script. https://docs.google.com/leaf?id=0B3CivKF_RjaINzcyZWQ1NzgtMmEyZS00YWEyLTgzYWItYjdlNzJmMzFkODYw&hl=en Launch it with: sudo python app.py But do not do it unless you are on a live distro and you have first removed all drives, unless you know what you are doing. (It's as dangerous as partitioning!)

Maybe slight mechanical misalignment of sensing head when doing random seeks/reads.