If you use WHERE CURRENT OF you had to open the cursor with the FOR UPDATE clause and this locks all rows selected by this cursor. COMMIT releases all locks and you get the error "fetch out of sequence" after subsequent fetch.
There was a bug up to 816 (I think) that prevented Oracle to report the error in this case so all seemed to be OK.
Also if ur performing huge dml activity commiting and then fetching again from with in the loop would result in "snap shot too" old error if your rollback segment is not configured properly.So take care whilc commiting with in the loop.
Bookmarks