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

IOSimPOR propExploration failure #148

Open
coot opened this issue Feb 26, 2024 · 0 comments
Open

IOSimPOR propExploration failure #148

coot opened this issue Feb 26, 2024 · 0 comments
Labels
IOSimPOR Issues / PRs related to IOSimPOR

Comments

@coot
Copy link
Collaborator

coot commented Feb 26, 2024

Describe the bug
The following counterexample is found:

      propExploration:                         FAIL (61.59s)
        *** Failed! Falsified (after 47 tests and 64 shrinks):
        AreNotEqual
        Shrink2 {getShrink2 = Tasks [Task [WhenSet 0 0,ThrowTo 1],Task [],Task [WhenSet 0 0],Task [ThrowTo 1,WhenSet 1 1],Task [ThrowTo 1]]}
        Schedule control: ControlAwait [ScheduleMod (RacyThreadId [5],2) ControlDefault [(RacyThreadId [4],0),(RacyThreadId [4],1),(RacyThreadId [4],2),(RacyThreadId [3],0),(RacyThreadId [3],1),(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)]]
        Thread {5} (5) delayed at time Time 0s
          until after:
            Thread {1}
            Thread {1} (1)
            Thread {2}
            Thread {3}
            Thread {3} (3)
            Thread {4}
            Thread {4} (4)
        
        0s - Thread [].0 main - SimStart ControlAwait [ScheduleMod (RacyThreadId [5],2) ControlDefault [(RacyThreadId [4],0),(RacyThreadId [4],1),(RacyThreadId [4],2),(RacyThreadId [3],0),(RacyThreadId [3],1),(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)]]
        0s - Thread [].0 main - Say Tasks [Task [WhenSet 0 0,ThrowTo 1],Task [],Task [WhenSet 0 0],Task [ThrowTo 1,WhenSet 1 1],Task [ThrowTo 1]]
        0s - Thread [].0 main - TxCommitted [] [TVarId 0] Effect {  }
        0s - Thread [].0 main - Unblocked []
        0s - Thread [].0 main - Deschedule Yield
        0s - Thread [].0 main - Effect VectorClock [Thread [].0] Effect {  }
        0s - Thread [].1 main - TxCommitted [] [TVarId 1] Effect {  }
        0s - Thread [].1 main - Unblocked []
        0s - Thread [].1 main - Deschedule Yield
        0s - Thread [].1 main - Effect VectorClock [Thread [].1] Effect {  }
        0s - Thread [].2 main - TxCommitted [] [TVarId 2] Effect {  }
        0s - Thread [].2 main - Unblocked []
        0s - Thread [].2 main - Deschedule Yield
        0s - Thread [].2 main - Effect VectorClock [Thread [].2] Effect {  }
        0s - Thread [].3 main - Mask MaskedInterruptible
        0s - Thread [].3 main - ThreadForked Thread {1}
        0s - Thread [].3 main - Deschedule Yield
        0s - Thread [].3 main - Effect VectorClock [Thread [].3] Effect { forks = [Thread {1}] }
        0s - Thread [].4 main - Mask Unmasked
        0s - Thread [].4 main - Deschedule Interruptable
        0s - Thread [].4 main - Effect VectorClock [Thread [].4] Effect {  }
        0s - Thread [].5 main - TxCommitted [] [] Effect {  }
        0s - Thread [].5 main - Unblocked []
        0s - Thread [].5 main - Deschedule Yield
        0s - Thread [].5 main - Effect VectorClock [Thread [].5] Effect {  }
        0s - Thread [].6 main - TxCommitted [] [TVarId 3] Effect {  }
        0s - Thread [].6 main - Unblocked []
        0s - Thread [].6 main - Deschedule Yield
        0s - Thread [].6 main - Effect VectorClock [Thread [].6] Effect {  }
        0s - Thread [].7 main - Mask MaskedInterruptible
        0s - Thread [].7 main - ThreadForked Thread {2}
        0s - Thread [].7 main - Deschedule Yield
        0s - Thread [].7 main - Effect VectorClock [Thread [].7] Effect { forks = [Thread {2}] }
        0s - Thread [].8 main - Mask Unmasked
        0s - Thread [].8 main - Deschedule Interruptable
        0s - Thread [].8 main - Effect VectorClock [Thread [].8] Effect {  }
        0s - Thread [].9 main - TxCommitted [] [] Effect {  }
        0s - Thread [].9 main - Unblocked []
        0s - Thread [].9 main - Deschedule Yield
        0s - Thread [].9 main - Effect VectorClock [Thread [].9] Effect {  }
        0s - Thread [].10 main - TxCommitted [] [TVarId 4] Effect {  }
        0s - Thread [].10 main - Unblocked []
        0s - Thread [].10 main - Deschedule Yield
        0s - Thread [].10 main - Effect VectorClock [Thread [].10] Effect {  }
        0s - Thread [].11 main - Mask MaskedInterruptible
        0s - Thread [].11 main - ThreadForked Thread {3}
        0s - Thread [].11 main - Deschedule Yield
        0s - Thread [].11 main - Effect VectorClock [Thread [].11] Effect { forks = [Thread {3}] }
        0s - Thread [].12 main - Mask Unmasked
        0s - Thread [].12 main - Deschedule Interruptable
        0s - Thread [].12 main - Effect VectorClock [Thread [].12] Effect {  }
        0s - Thread [].13 main - TxCommitted [] [] Effect {  }
        0s - Thread [].13 main - Unblocked []
        0s - Thread [].13 main - Deschedule Yield
        0s - Thread [].13 main - Effect VectorClock [Thread [].13] Effect {  }
        0s - Thread [].14 main - TxCommitted [] [TVarId 5] Effect {  }
        0s - Thread [].14 main - Unblocked []
        0s - Thread [].14 main - Deschedule Yield
        0s - Thread [].14 main - Effect VectorClock [Thread [].14] Effect {  }
        0s - Thread [].15 main - Mask MaskedInterruptible
        0s - Thread [].15 main - ThreadForked Thread {4}
        0s - Thread [].15 main - Deschedule Yield
        0s - Thread [].15 main - Effect VectorClock [Thread [].15] Effect { forks = [Thread {4}] }
        0s - Thread [].16 main - Mask Unmasked
        0s - Thread [].16 main - Deschedule Interruptable
        0s - Thread [].16 main - Effect VectorClock [Thread [].16] Effect {  }
        0s - Thread [].17 main - TxCommitted [] [] Effect {  }
        0s - Thread [].17 main - Unblocked []
        0s - Thread [].17 main - Deschedule Yield
        0s - Thread [].17 main - Effect VectorClock [Thread [].17] Effect {  }
        0s - Thread [].18 main - TxCommitted [] [TVarId 6] Effect {  }
        0s - Thread [].18 main - Unblocked []
        0s - Thread [].18 main - Deschedule Yield
        0s - Thread [].18 main - Effect VectorClock [Thread [].18] Effect {  }
        0s - Thread [].19 main - Mask MaskedInterruptible
        0s - Thread [].19 main - ThreadForked Thread {5}
        0s - Thread [].19 main - Deschedule Yield
        0s - Thread [].19 main - Effect VectorClock [Thread [].19] Effect { forks = [Thread {5}] }
        0s - Thread [].20 main - Mask Unmasked
        0s - Thread [].20 main - Deschedule Interruptable
        0s - Thread [].20 main - Effect VectorClock [Thread [].20] Effect {  }
        0s - Thread [].21 main - TxCommitted [] [] Effect {  }
        0s - Thread [].21 main - Unblocked []
        0s - Thread [].21 main - Deschedule Yield
        0s - Thread [].21 main - Effect VectorClock [Thread [].21] Effect {  }
        0s - Thread [].22 main - TxCommitted [TVarId 1] [] Effect { writes = fromList [TVarId 1] }
        0s - Thread [].22 main - Unblocked []
        0s - Thread [].22 main - Deschedule Yield
        0s - Thread [].22 main - Effect VectorClock [Thread [].22] Effect { writes = fromList [TVarId 1] }
        0s - Thread [].23 main - TxBlocked [Labelled TVarId 2 async-RacyThreadId [1]] Effect { reads = fromList [TVarId 2] }
        0s - Thread [].23 main - Deschedule Blocked BlockedOnSTM
        0s - Thread [].23 main - Effect VectorClock [Thread [].23] Effect { reads = fromList [TVarId 2] }
        0s - Thread {5}.0  - Mask Unmasked
        0s - Thread {5}.0  - Deschedule Interruptable
        0s - Thread {5}.0  - Effect VectorClock [Thread {5}.0, Thread [].19] Effect {  }
        0s - Thread {5}.1 5 - TxCommitted [] [TVarId 7] Effect { reads = fromList [TVarId 1] }
        0s - Thread {5}.1 5 - Unblocked []
        0s - Thread {5}.1 5 - Deschedule Yield
        0s - Thread {5}.1 5 - Effect VectorClock [Thread {5}.1, Thread [].22] Effect { reads = fromList [TVarId 1] }
        0s - Thread {5}.2 5 - FollowControl ControlAwait [ScheduleMod (RacyThreadId [5],2) ControlDefault [(RacyThreadId [4],0),(RacyThreadId [4],1),(RacyThreadId [4],2),(RacyThreadId [3],0),(RacyThreadId [3],1),(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)]]
        0s - Thread {5}.2 5 - AwaitControl Thread {5}.2 ControlFollow [(RacyThreadId [4],0),(RacyThreadId [4],1),(RacyThreadId [4],2),(RacyThreadId [3],0),(RacyThreadId [3],1),(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {5}.2 5 - Deschedule Sleep
        0s - Thread {5}.2 5 - ThreadSleep
        0s - Thread {4}.0  - Reschedule ControlFollow [(RacyThreadId [4],0),(RacyThreadId [4],1),(RacyThreadId [4],2),(RacyThreadId [3],0),(RacyThreadId [3],1),(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {4}.0  - PerformAction Thread {4}.0
        0s - Thread {4}.0  - PerformAction Thread {4}.0
        0s - Thread {4}.0  - Mask Unmasked
        0s - Thread {4}.0  - Deschedule Interruptable
        0s - Thread {4}.0  - Effect VectorClock [Thread {4}.0, Thread [].15] Effect {  }
        0s - Thread {4}.1  - PerformAction Thread {4}.1
        0s - Thread {4}.1  - PerformAction Thread {4}.1
        0s - Thread {4}.1 4 - PerformAction Thread {4}.1
        0s - Thread {4}.1 4 - TxCommitted [] [TVarId 8] Effect { reads = fromList [TVarId 1] }
        0s - Thread {4}.1 4 - Unblocked []
        0s - Thread {4}.1 4 - Deschedule Yield
        0s - Thread {4}.1 4 - Effect VectorClock [Thread {4}.1, Thread [].22] Effect { reads = fromList [TVarId 1] }
        0s - Thread {4}.2  - Reschedule ControlFollow [(RacyThreadId [4],2),(RacyThreadId [3],0),(RacyThreadId [3],1),(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {4}.2 4 - PerformAction Thread {4}.2
        0s - Thread {4}.2 4 - ThrowTo (ExitFailure 0) Thread {2}
        0s - Thread {4}.2 4 - ThrowToBlocked
        0s - Thread {4}.2 4 - Deschedule Blocked BlockedOnThrowTo
        0s - Thread {4}.2 4 - Effect VectorClock [Thread {2}.0, Thread {4}.2, Thread [].22] Effect { throws = [Thread {2}] }
        0s - Thread {3}.0  - Reschedule ControlFollow [(RacyThreadId [3],0),(RacyThreadId [3],1),(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {3}.0  - PerformAction Thread {3}.0
        0s - Thread {3}.0  - PerformAction Thread {3}.0
        0s - Thread {3}.0  - Mask Unmasked
        0s - Thread {3}.0  - Deschedule Interruptable
        0s - Thread {3}.0  - Effect VectorClock [Thread {3}.0, Thread [].11] Effect {  }
        0s - Thread {3}.1  - PerformAction Thread {3}.1
        0s - Thread {3}.1  - PerformAction Thread {3}.1
        0s - Thread {3}.1 3 - PerformAction Thread {3}.1
        0s - Thread {3}.1 3 - TxCommitted [] [TVarId 9] Effect { reads = fromList [TVarId 1] }
        0s - Thread {3}.1 3 - Unblocked []
        0s - Thread {3}.1 3 - Deschedule Yield
        0s - Thread {3}.1 3 - Effect VectorClock [Thread {3}.1, Thread [].22] Effect { reads = fromList [TVarId 1] }
        0s - Thread {2}.0  - Reschedule ControlFollow [(RacyThreadId [2],0),(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {2}.0  - PerformAction Thread {2}.0
        0s - Thread {2}.0  - PerformAction Thread {2}.0
        0s - Thread {2}.0  - Mask Unmasked
        0s - Thread {2}.0  - Deschedule Interruptable
        0s - Thread {2}.0  - ThrowToUnmasked Labelled Thread {4} 4
        0s - Thread {2}.0  - Effect VectorClock [Thread {2}.0, Thread [].7] Effect { wakeup = [Thread {4}] }
        0s - Thread {4}.- 4 - ThrowToWakeup
        0s - Thread {2}.0  - Deschedule Yield
        0s - Thread {2}.0  - Effect VectorClock [Thread {2}.0, Thread {4}.2, Thread [].22] Effect { wakeup = [Thread {4}] }
        0s - Thread {1}.0  - Reschedule ControlFollow [(RacyThreadId [1],0),(RacyThreadId [1],1),(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {1}.0  - PerformAction Thread {1}.0
        0s - Thread {1}.0  - PerformAction Thread {1}.0
        0s - Thread {1}.0  - Mask Unmasked
        0s - Thread {1}.0  - Deschedule Interruptable
        0s - Thread {1}.0  - Effect VectorClock [Thread {1}.0, Thread [].3] Effect {  }
        0s - Thread {1}.1  - PerformAction Thread {1}.1
        0s - Thread {1}.1  - PerformAction Thread {1}.1
        0s - Thread {1}.1 1 - PerformAction Thread {1}.1
        0s - Thread {1}.1 1 - TxCommitted [] [TVarId 10] Effect { reads = fromList [TVarId 1] }
        0s - Thread {1}.1 1 - Unblocked []
        0s - Thread {1}.1 1 - Deschedule Yield
        0s - Thread {1}.1 1 - Effect VectorClock [Thread {1}.1, Thread [].22] Effect { reads = fromList [TVarId 1] }
        0s - Thread {3}.2  - Reschedule ControlFollow [(RacyThreadId [3],2),(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {3}.2 3 - PerformAction Thread {3}.2
        0s - Thread {3}.2 3 - TxCommitted [TVarId 0] [] Effect { reads = fromList [TVarId 0], writes = fromList [TVarId 0] }
        0s - Thread {3}.2 3 - Say 0
        0s - Thread {3}.2 3 - Unblocked []
        0s - Thread {3}.2 3 - Deschedule Yield
        0s - Thread {3}.2 3 - Effect VectorClock [Thread {3}.2, Thread [].22] Effect { reads = fromList [TVarId 0], writes = fromList [TVarId 0] }
        0s - Thread {3}.3  - Reschedule ControlFollow [(RacyThreadId [3],3),(RacyThreadId [3],4),(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {3}.3 3 - PerformAction Thread {3}.3
        0s - Thread {3}.3 3 - Mask MaskedInterruptible
        0s - Thread {3}.3 3 - Deschedule Interruptable
        0s - Thread {3}.3 3 - Effect VectorClock [Thread {3}.3, Thread [].22] Effect {  }
        0s - Thread {3}.4 3 - PerformAction Thread {3}.4
        0s - Thread {3}.4 3 - PerformAction Thread {3}.4
        0s - Thread {3}.4 3 - TxCommitted [Labelled TVarId 4 async-RacyThreadId [3]] [] Effect { reads = fromList [TVarId 4], writes = fromList [TVarId 4] }
        0s - Thread {3}.4 3 - Unblocked []
        0s - Thread {3}.4 3 - Deschedule Yield
        0s - Thread {3}.4 3 - Effect VectorClock [Thread {3}.4, Thread [].22] Effect { reads = fromList [TVarId 4], writes = fromList [TVarId 4] }
        0s - Thread {3}.5  - Reschedule ControlFollow [(RacyThreadId [3],5),(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {3}.5 3 - PerformAction Thread {3}.5
        0s - Thread {3}.5 3 - ThreadFinished
        0s - Thread {3}.5 3 - Deschedule Terminated
        0s - Thread {3}.5 3 - Effect VectorClock [Thread {3}.5, Thread [].22] Effect {  }
        0s - Thread {1}.2  - Reschedule ControlFollow [(RacyThreadId [1],2),(RacyThreadId [1],3)] []
        0s - Thread {1}.2 1 - PerformAction Thread {1}.2
        0s - Thread {1}.2 1 - TxBlocked [TVarId 0] Effect { reads = fromList [TVarId 0] }
        0s - Thread {1}.2 1 - Deschedule Blocked BlockedOnSTM
        0s - Thread {1}.2 1 - Effect VectorClock [Thread {1}.2, Thread {3}.2, Thread [].22] Effect { reads = fromList [TVarId 0] }
        InternalError "assertion failure: Thread {1} not runnable"
        assertion failure: Thread {1} not runnable
        Use --quickcheck-replay=901028 to reproduce.
        Use -p '/propExploration/' to rerun this test only.

Ref. I also reproduced it on Linux.

@coot coot added the IOSimPOR Issues / PRs related to IOSimPOR label Feb 26, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
IOSimPOR Issues / PRs related to IOSimPOR
Projects
None yet
Development

No branches or pull requests

1 participant