The bug was caused by a race condition between Image and UI threads. The latter one tried to read the data from the merged projection while the former one was preparing it. I have fixed this by splitting the update process into two parts. The first part reads data from the image. It is executed in the context of the Image thread. Then the thread saves update information got from the canvas to the external structure called KisUpdateInformation and passes it to the UI thread, that continues updating doing rescaling and other slow operations.
This patch touches much code in canvas subsystem, so there will be a short delay for reviewing and testing the patch. And if you want to see it in trunk faster, you can help testing it! 
There are some technical details of implementation in our wiki 
 - http://dimula73.narod.ru/canvas-split-single-v2.patch
 - http://wiki.koffice.org/index.php?title=Krita/KisCanvas2_Update_Split_Reasoning