Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New model checker #257

Open
6 of 15 tasks
ndkoval opened this issue Jan 18, 2024 · 2 comments
Open
6 of 15 tasks

New model checker #257

ndkoval opened this issue Jan 18, 2024 · 2 comments
Assignees

Comments

@ndkoval
Copy link
Collaborator

ndkoval commented Jan 18, 2024

We need to implement a better model checker with partial order reduction and weak memory models support.

The prototype is already available in eventstruct-mc. The remaining subtasks are listed below.

Refactorings and code maintanace:

  • Refactor LoopDetector (encapsulate code, moving most of it from ManagedStrategy.kt). Create a separate issue/pr for that. 3d.
  • Rebase on develop after Transformation via javaagent #249 is merged and review the byte-code transformation. 5d.
  • Add an option (system property?) to use the new model checker instead of the current one. 1d.

Performance:

  • Optimize the consistency check: reduce the size of checked execution graphs (for example, remove events accessing thread-local objects, remove events accessing race-free variables, etc). 5d.
  • Add indexes for queries such as “get all events of type X for the variable Y starting from the event E”. 2.5d.
  • Check whether specific byte-code generation for the primitive types (int, long, …) to avoid boxing/unboxing improves the performance. 2d.
  • How many consistency checks fail? Should we optimize the interleaving generation phase or the consistency check itself?

Other:

  • Repair trace collection in the new model checker (tests inside representation folder). This feature was temporarily disabled to simplify development. 3d.
  • Check on the Kotlin Coroutines build. 5d.
  • Decide what the number of invocations should reflect: "consistent + inconsistent" or "consistent only". Decided: "consistent only".
  • Code review. 5d.

Later:

  • Evaluate the number of interleavings encoded by execution graphs (to compare with the current model checker)
  • Write a technical report (white paper)
  • Add reflection support
  • Support weak memory model
@eupp
Copy link
Collaborator

eupp commented Aug 6, 2024

New branch name for the strategy (after rebase to the new bytecode transformation):
https://github.com/JetBrains/lincheck/tree/new-mc

@eupp
Copy link
Collaborator

eupp commented Oct 3, 2024

Draft PR #410 (for tracking merge progress)

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

No branches or pull requests

2 participants