Commit 982263ce authored by Alex Bennée's avatar Alex Bennée
Browse files

replay: assert time only goes forward



If we find ourselves trying to add an event to the log where time has
gone backwards it is because a vCPU event has occurred and the
main-loop is not yet aware of time moving forward. This should not
happen and if it does its better to fail early than generate a log
that will have weird behaviour.

Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
parent 1d05906b
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -195,6 +195,10 @@ void replay_save_instructions(void)
    if (replay_file && replay_mode == REPLAY_MODE_RECORD) {
        replay_mutex_lock();
        int diff = (int)(replay_get_current_step() - replay_state.current_step);

        /* Time can only go forward */
        assert(diff >= 0);

        if (diff > 0) {
            replay_put_event(EVENT_INSTRUCTION);
            replay_put_dword(diff);
+4 −0
Original line number Diff line number Diff line
@@ -84,6 +84,10 @@ void replay_account_executed_instructions(void)
        if (replay_state.instructions_count > 0) {
            int count = (int)(replay_get_current_step()
                              - replay_state.current_step);

            /* Time can only go forward */
            assert(count >= 0);

            replay_state.instructions_count -= count;
            replay_state.current_step += count;
            if (replay_state.instructions_count == 0) {