Unfortunately, I'm unable to figure out the root cause here. There are three important events that I've noticed in this debug log:
2016-07-02 08:07:16 ERROR: ApplyTxInUndo: undo data adding output to missing transaction
2016-07-02 08:07:15 ERROR: DisconnectBlock(): added transaction mismatch? database corrupted
2016-07-02 10:39:22 nActualTimespan = 890179 before bounds
2016-07-02 10:39:22 GetNextWorkRequired RETARGET
2016-07-02 10:39:22 params.nPowTargetTimespan = 1209600 nActualTimespan = 890179
2016-07-02 10:39:22 Before: 1972dbf2 0000000000000072dbf200000000000000000000000000000000000000000000
2016-07-02 10:39:22 After: 19548732 00000000000000548732d7def344899def344899def344899def344899def344
2016-07-02 10:39:59 LoadExternalBlockFile: Deserialize or I/O error - std::bad_alloc
There's something very wrong due to the amount of errors (first and second quote). Are you sure that you have enough storage on the storage medium/partition that you're using? The last one might even suggest a hardware problem with the HDD/SSD even though this may necessarily not be the case. I had a different problem recently that suggested a hardware problem (but it wasn't one), but you can check this using software (run a full sector scan). Have you tried deleting everything (backup wallet.dat) in the datadir folder and trying from scratch (everything except the wallet.dat)?