Fix some bugs that were causing spurious stalls

Fixed the following problems:
* The start time of the stall was moving ahead while the stall was in flight, thereby smaller stall than actual
* Added a delay in reseting the stall timer right after the the task finishes, to avoid a race condition where a stall was being reported errorneously (when there was no stall)
* There might still be some race conditions that can give rise to stalls that are not legitimate, albiet much infrequent. Added a fence condition to make sure that if we are reporting a stall then the stall duration should be at least be equal to the task timeout.
This is for one task, no? And repeated executions of the same task are happening one after the other. Are you saying different go routines for different tasks, say at 1 minute boundary when both tasks kick in, will step over each other? First, I am not sure if they will have their own copy or not. Even if they *DO* step on each other, it will be overwriting with the same value again due to the fact that the they aligned. Which does not seem like it might cause problems - correct?