I'm trying to find out what exactly is happening here. I've been intentionally corrupting index pages in InnoDB tables, changing bytes in user record areas that actually contain information (largest changed section being 40 bytes so far), then confirming checksum failure with innochecksum.
I go into the mysql command line, execute a few queries to observe that it's crashing, attempt an 'ALTER TABLE ... ENGINE=InnoDB" and observe the failure, then I go back to the shell and confirm one more time that innochecksum still shows a checksum failure on the table.
After all of that, I run "mysqldump --single-transaction db table > dump". It fails of course, with an error like "mysqldump: Couldn't execute 'show table status like 'tablename'': Lost connection to MySQL server during query (2013) ", but then, I run innochecksum again, and the table no longer shows corruption. I jump into MySQL, and I can execute queries on the table without issue. For all intents and purposes, it seems to be completely repaired.
In a test environment, I've done this numerous times (about 20-25 times so far), and where other methods fail, this seems to succeed, and I have no idea why that is. This only seems to occur when I use the "single-transaction" flag. I know that mysqldump is not actually fixing anything (right?), and that InnoDB is likely just recovering the data from the doublewrite buffer or the logs, but WHY is it only doing this when mysqldump --single-transaction is run on the table?