One or more non-transitory computer readable media storing instructions which, when executed by one or more hardware processors, cause the one or more hardware processors to perform the following operations: changing a global state associated with a first thread (506a-b) from a first state to a second state; wherein the global state associated with the first thread cycles through a plurality of states based on operations executed by the first thread, and a sequence within a cycle of the plurality of states comprises the first state, the second state, and a third state; identifying a call stack associated with a second thread; wherein the call stack includes a plurality of frames corresponding to a plurality of frame states, each of the plurality of frame states tracks a respective progress of operations executed with respect to a corresponding frame of the plurality of frames, and assumable values for the plurality of frame states include the first state, the second state, and the third state; identifying a first frame on the call stack that is marked by a current value for a stack watermark associated with the second thread; wherein the first frame is a deepest frame on the call stack having a frame state that is the first state; storing a first color watermark to mark the first frame as the deepest frame on the call stack having the frame state that is the first state; processing a set of one or more consecutive frames on the call stack, the set of consecutive frames including a shallowest frame of the call state, such that a respective frame state of each of the set of consecutive frames becomes the second state; identifying a deepest frame of the set of consecutive frames; wherein the deepest frame of the set of consecutive frames is a deepest frame on the call stack having a frame state that is the second state; updating the stack watermark to mark the deepest frame of the set of consecutive frames as the deepest frame on the call stack having the frame state that is the second state. changing a global state associated with a first thread (506a-b) from a first state to a second state; wherein the global state associated with the first thread cycles through a plurality of states based on operations executed by the first thread, and a sequence within a cycle of the plurality of states comprises the first state, the second state, and a third state; identifying a call stack associated with a second thread; wherein the call stack includes a plurality of frames corresponding to a plurality of frame states, each of the plurality of frame states tracks a respective progress of operations executed with respect to a corresponding frame of the plurality of frames, and assumable values for the plurality of frame states include the first state, the second state, and the third state; identifying a first frame on the call stack that is marked by a current value for a stack watermark associated with the second thread; wherein the first frame is a deepest frame on the call stack having a frame state that is the first state; storing a first color watermark to mark the first frame as the deepest frame on the call stack having the frame state that is the first state; processing a set of one or more consecutive frames on the call stack, the set of consecutive frames including a shallowest frame of the call state, such that a respective frame state of each of the set of consecutive frames becomes the second state; identifying a deepest frame of the set of consecutive frames; wherein the deepest frame of the set of consecutive frames is a deepest frame on the call stack having a frame state that is the second state; updating the stack watermark to mark the deepest frame of the set of consecutive frames as the deepest frame on the call stack having the frame state that is the second state.