Skip to content

LIVELOCK: Implement progress transition#159

Draft
harshitaleela wants to merge 3 commits intomainfrom
livelock
Draft

LIVELOCK: Implement progress transition#159
harshitaleela wants to merge 3 commits intomainfrom
livelock

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.

@harshitaleela harshitaleela marked this pull request as draft January 5, 2026 18:42
@harshitaleela harshitaleela force-pushed the livelock branch 3 times, most recently from e35b310 to c08d976 Compare March 21, 2026 12:00
This commit replaces the previous livelock detection heuristic with the
implementation of a new algorithm that uses user-inserted progress
transitions along with single schedule exploration beyond the
max-transitions-depth bound to detect livelock.
The new flag, --explore-round-robin|-r can be used to alter the default
scheduling behaviour: round-robin instead of lowest-thread-id-first.
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.

1 participant