diff --git a/tools/releasetools/add_img_to_target_files.py b/tools/releasetools/add_img_to_target_files.py index 934b73f517..8d660f88b9 100644 --- a/tools/releasetools/add_img_to_target_files.py +++ b/tools/releasetools/add_img_to_target_files.py @@ -1083,10 +1083,15 @@ def AddImagesToTargetFiles(filename): ("system_dlkm", has_system_dlkm, AddSystemDlkm, []), ("system_other", has_system_other, AddSystemOther, []), ) - - with ThreadPoolExecutor(max_workers=len(add_partition_calls)) as executor: - for future in [executor.submit(add_partition, *call) for call in add_partition_calls]: - future.result() + # If output_zip exists, each add_partition_calls writes bytes to the same output_zip, + # which is not thread-safe. So, run them in serial if output_zip exists. + if output_zip: + for call in add_partition_calls: + add_partition(*call) + else: + with ThreadPoolExecutor(max_workers=len(add_partition_calls)) as executor: + for future in [executor.submit(add_partition, *call) for call in add_partition_calls]: + future.result() AddApexInfo(output_zip)