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) }