Always check thread metadata
The thread metadata file is mandatory for trace version 2, so the emulator should fail if the file is not there or has the wrong version. Old traces with version 1 are not supported.
This commit is contained in:
		
							parent
							
								
									c424a3177d
								
							
						
					
					
						commit
						998200d507
					
				| @ -50,20 +50,17 @@ create_thread(struct proc *proc, const char *tracedir, const char *relpath) | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	/* Old version 1 doesn't have thread metadata */ | ||||
| 	if (proc->metadata_version > 1) { | ||||
| 		/* Build metadata path */ | ||||
| 		char mpath[PATH_MAX]; | ||||
| 		if (snprintf(mpath, PATH_MAX, "%s/%s/thread.%d.json", | ||||
| 					tracedir, proc->id, tid) >= PATH_MAX) { | ||||
| 			err("path too long"); | ||||
| 			return NULL; | ||||
| 		} | ||||
| 	/* Build metadata path */ | ||||
| 	char mpath[PATH_MAX]; | ||||
| 	if (snprintf(mpath, PATH_MAX, "%s/%s/thread.%d.json", | ||||
| 				tracedir, proc->id, tid) >= PATH_MAX) { | ||||
| 		err("path too long"); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 		if (metadata_load_thread(mpath, thread) != 0) { | ||||
| 			err("cannot load metadata from %s", mpath); | ||||
| 			return NULL; | ||||
| 		} | ||||
| 	if (metadata_load_thread(mpath, thread) != 0) { | ||||
| 		err("cannot load metadata from %s", mpath); | ||||
| 		return NULL; | ||||
| 	} | ||||
| 
 | ||||
| 	if (proc_add_thread(proc, thread) != 0) { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user