T2 reads a value which is written by T1, and commits before T1. So, if T1 faces any error and aborts after T2 commits (as in the last line of schedule), T1 will be rolled back, but T2 is not able to roll back since it is already committed.
So, we have an irrecoverable schedule.