Browse Source

drivers: call _starpu_push_task_output after _starpu_driver_update_job_feedback as data used by _starpu_driver_update_job_feedback may get freed by _starpu_push_task_output

Nathalie Furmento 13 years ago
parent
commit
b852227eef

+ 1 - 2
src/drivers/cpu/driver_cpu.c

@@ -67,10 +67,9 @@ static int execute_job_on_cpu(starpu_job_t j, struct starpu_worker_s *cpu_args,
 
 	if (rank == 0)
 	{
-		_starpu_push_task_output(task, 0);
-
 		_starpu_driver_update_job_feedback(j, cpu_args,
 				perf_arch, &codelet_start, &codelet_end);
+		_starpu_push_task_output(task, 0);
 	}
 
 	return 0;

+ 2 - 2
src/drivers/cuda/driver_cuda.c

@@ -204,10 +204,10 @@ static int execute_job_on_cuda(starpu_job_t j, struct starpu_worker_s *args)
 
 	_starpu_driver_end_job(args, j, &codelet_end, 0);
 
-	_starpu_push_task_output(task, mask);
-
 	_starpu_driver_update_job_feedback(j, args, args->perf_arch, &codelet_start, &codelet_end);
 
+	_starpu_push_task_output(task, mask);
+
 	return 0;
 }
 

+ 2 - 2
src/drivers/opencl/driver_opencl.c

@@ -534,10 +534,10 @@ static int _starpu_opencl_execute_job(starpu_job_t j, struct starpu_worker_s *ar
 
 	_starpu_driver_end_job(args, j, &codelet_end, 0);
 
-	_starpu_push_task_output(task, mask);
-
 	_starpu_driver_update_job_feedback(j, args, args->perf_arch,
 							&codelet_start, &codelet_end);
 
+	_starpu_push_task_output(task, mask);
+
 	return EXIT_SUCCESS;
 }