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: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
		
							parent
							
								
									1d05906b95
								
							
						
					
					
						commit
						982263ce71
					
				| @ -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); | ||||
|  | ||||
| @ -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) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Alex Bennée
						Alex Bennée