Skip to content

Conversation

@harshitaleela
Copy link
Collaborator

This commit implements the progress transition as a bookkeeping mechanism to detect long per-thread executions that do not make progress, indicating a livelock-like situation.

A per-thread no-progress counter is incremented for every transition. Whenever the target executes MC_PROGRESS(), the counter for the corresponding thread is reset. If at the end of execution, the no-progress counter for any thread exceeds a configurable threshold, the trace is then checked for cycles. A potential livelock is reported only when both conditions hold: no-progress and repetition.

This commit implements the progress transition as a bookkeeping
mechanism to detect long per-thread executions that do not make
progress, indicating a livelock-like situation.

A per-thread no-progress counter is incremented for every transition.
Whenever the target executes MC_PROGRESS(), the counter for the
corresponding thread is reset. If at the end of execution, the
no-progress counter for any thread exceeds a configurable threshold,
the trace is then checked for cycles. A potential livelock is reported
only when both conditions hold: no-progress and repetition.
@harshitaleela harshitaleela marked this pull request as draft January 5, 2026 18:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants