[AMDGPU] Adding mutex to guard lld::elf::link interface use
authorjerryyin <zhuoryin@amd.com>
Mon, 21 Sep 2020 18:22:56 +0000 (11:22 -0700)
committerjerryyin <zhuoryin@amd.com>
Mon, 21 Sep 2020 18:37:57 +0000 (11:37 -0700)
commitf87ceb63eb011e5cd653218af619097b58bf568f
tree148eac6231a3d72849805c7e9b38c8014f7dc963
parent746a2c3775658c4485a8e71a7d46ee55c30615b8
[AMDGPU] Adding mutex to guard lld::elf::link interface use

check-mlir target run tests simultaneously with multiple threads. This caused multiple threads to invoke the `lld::elf::link()` interface at the same time. Since the interface does not have a thread-safe implementation, add a metex to prevent multi-threaded access.

I discovered this by looking the the failure stack trace. lld/ELF/symbolTable.cpp, SymbolTable::insert() hit into an assert with related to Epoch Trackers. The root cause is to due to there is no protection around the symMap (update) which is implemented in non-thread safe data structure: denseMap.

Differential Revision: https://reviews.llvm.org/D88038
mlir/tools/mlir-rocm-runner/mlir-rocm-runner.cpp