I've encountered a new mysql error for many (all) tables when innodb was starved for memory. The error:
Incorrect information in file: '...frm'
and any attempt to repair the table failed.
Much consternation!
But this occurred not because the table was corrupt but because I tried to give too much memory to the innodb buffer pool.
The real culprit in the error log was
InnoDB: Error: cannot allocate 2516598784 bytes of InnoDB: memory with malloc!
InnoDB: by InnoDB 228832092 bytes. Operating system errno: 12
Reducing the innodb-buffer-pool allocation to a more sane level for the box eliminated the apparent table corruption.