From 570e20696c55b3cd660842ec493e027a2e8752d4 Mon Sep 17 00:00:00 2001 From: Georgy Bronnikov Date: Tue, 24 Aug 2021 17:24:07 +0300 Subject: [PATCH] IR: use synchronized access when creating initial signature stub --- .../kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt index 12fa93af59c..9ff50fe267e 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/declarations/lazy/IrLazyFunctionBase.kt @@ -21,7 +21,8 @@ interface IrLazyFunctionBase : IrLazyDeclarationBase, IrTypeParametersContainer val initialSignatureFunction: IrFunction? fun createInitialSignatureFunction(): Lazy = - lazy(LazyThreadSafetyMode.PUBLICATION) { + // Need SYNCHRONIZED; otherwise two stubs generated in parallel may fight for the same symbol. + lazy(LazyThreadSafetyMode.SYNCHRONIZED) { descriptor.initialSignatureDescriptor?.takeIf { it != descriptor }?.original?.let(stubGenerator::generateFunctionStub) }