mirror of
				https://github.com/ggml-org/llama.cpp.git
				synced 2025-10-30 08:42:00 +00:00 
			
		
		
		
	train : fix #4227 (double free in examples/train-text-from-scratch/train-text-from-scratch.cpp) (#4351)
On commit b1108 (44c117f4) xaedes added ggml_allocr * alloc = NULL; ... (many lines in between) if (alloc) { ggml_allocr_free(alloc); } Which is correct, but it's easy to lose context after many lines in between. On commit b1287 (0e76a899) xaedes made a big change. From here on, alloc is freed eagerly. alloc = ggml_allocr_new(...) ... (short lines of code) ggml_allocr_free(alloc) This happens a few times, but alloc is never set to NULL, and many lines below, we still have if (alloc) { ggml_allocr_free(alloc); } which causes a double-free.
This commit is contained in:
		| @@ -1295,10 +1295,6 @@ int main(int argc, char ** argv) { | ||||
|         opt_cb_data.last_save_iter = opt->iter; | ||||
|     } | ||||
|  | ||||
|     if (alloc) { | ||||
|         ggml_allocr_free(alloc); | ||||
|     } | ||||
|  | ||||
|     ggml_free(opt->ctx); | ||||
|     free_train_state(train); | ||||
|     ggml_free(model.ctx); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Hongyu Ouyang
					Hongyu Ouyang