In one statement :
Reading uncommitted data.
Say T1 is writing any variable x
Concurrently running, a transaction T2 requires the value of x
T1 T2
write(x)
read(x)
commit
failure
Now, when T1 fails, it is rolled back and the modified value of x is lost. The database still has the previous value which was last committed by any other transaction. However, T2 completed and got committed using the wrong value of x it might use in calculations. This is said as Dirty read problem.