Skip to content

[18.1.5->18.1.6 regression] clang segfaults when building llvm itself on ppc64/ppc64le on chimera linux (PPCMergeStringPool) #92991

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
nekopsykose opened this issue May 22, 2024 · 10 comments · Fixed by #92996
Labels
backend:PowerPC crash Prefer [crash-on-valid] or [crash-on-invalid] regression release:backport

Comments

@nekopsykose
Copy link

probably caused by #91557

on ppc64le:

FAILED: bin/flang-new 
: && /builddir/llvm-18.1.6/boot-clang++ -ffile-prefix-map=/builddir/llvm-18.1.6=. -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -fno-omit-frame-pointer -flto=thin -mtune=power9 -O2 -fPIC -g1 -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O3 -DNDEBUG -Wl,-z,pack-relative-relocs -fno-omit-frame-pointer -flto=thin -fuse-ld=/usr/lib/llvm-bootstrap/bin/ld.lld -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-cache-dir=/builddir/llvm-18.1.6/build/lto.cache   -Wl,--export-dynamic  -Wl,--gc-sections tools/flang/tools/flang-driver/CMakeFiles/flang-new.dir/driver.cpp.o tools/flang/tools/flang-driver/CMakeFiles/flang-new.dir/fc1_main.cpp.o -o bin/flang-new -L/builddir/llvm-18.1.6/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/builddir/llvm-18.1.6/build/./lib:/builddir/llvm-18.1.6/build/lib:"  lib/libflangFrontend.a  lib/libflangFrontendTool.a  lib/libflangFrontend.a  lib/libFortranLower.a  lib/libFortranSemantics.a  lib/libFortranEvaluate.a  lib/libFortranParser.a  lib/libFortranDecimal.a  lib/libFortranCommon.a  lib/libFIRTransforms.a  lib/libFIRCodeGen.a  lib/libMLIRMathToFuncs.a  lib/libHLFIRTransforms.a  lib/libFIRAnalysis.a  lib/libFIRBuilder.a  lib/libFIRSupport.a  lib/libMLIROpenACCToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVMIRTranslation.a  lib/libHLFIRDialect.a  lib/libFIRDialect.a  lib/libFIRDialectSupport.a  lib/libMLIROpenMPToLLVM.a  lib/libMLIRTargetLLVMIRImport.a  lib/libMLIRAffineTransformOps.a  lib/libMLIRAMDGPUTransforms.a  lib/libMLIRAMDGPUUtils.a  lib/libMLIRAMDGPUDialect.a  lib/libMLIRArithValueBoundsOpInterfaceImpl.a  lib/libMLIRAsyncTransforms.a  lib/libMLIRBufferizationPipelines.a  lib/libMLIRBufferizationTransformOps.a  lib/libMLIRControlFlowTransforms.a  lib/libMLIREmitCTransforms.a  lib/libMLIREmitCDialect.a  lib/libMLIRFuncTransformOps.a  lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUPipelines.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRNVVMToLLVM.a  lib/libMLIRIRDL.a  lib/libMLIRMathTransforms.a  lib/libMLIRMemRefTransformOps.a  lib/libMLIRMeshTransforms.a  lib/libMLIRMLProgramTransforms.a  lib/libMLIRMLProgramDialect.a  lib/libMLIRNVGPUUtils.a  lib/libMLIRNVGPUTransformOps.a  lib/libMLIRNVGPUToNVVM.a  lib/libMLIRNVGPUTransforms.a  lib/libMLIROpenACCDialect.a  lib/libMLIROpenMPDialect.a  lib/libMLIROpenACCMPCommon.a  lib/libMLIRSCFTransformOps.a  lib/libMLIRShapeOpsTransforms.a  lib/libMLIRShapeDialect.a  lib/libMLIRSparseTensorPipelines.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRAffineToStandard.a  lib/libMLIRComplexToLLVM.a  lib/libMLIRComplexToStandard.a  lib/libMLIRMathToLLVM.a  lib/libMLIRMathToLibm.a  lib/libMLIRGPUToNVVMTransforms.a  lib/libMLIRGPUToGPURuntimeTransforms.a  lib/libMLIRGPUTransforms.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRGPUToLLVMIRTranslation.a  lib/libMLIRAsyncToLLVM.a  lib/libMLIRAsyncDialect.a  lib/libMLIRConvertToLLVMPass.a  lib/libMLIRConvertToLLVMInterface.a  lib/libMLIRReconcileUnrealizedCasts.a  lib/libMLIRComplexToLibm.a  lib/libMLIRMemRefToLLVM.a  lib/libMLIRVectorToLLVMPass.a  lib/libMLIRAMXTransforms.a  lib/libMLIRAMXDialect.a  lib/libMLIRArmNeonDialect.a  lib/libMLIRArmSMETransforms.a  lib/libMLIRArmSVETransforms.a  lib/libMLIRArmSVEDialect.a  lib/libMLIRVectorToArmSME.a  lib/libMLIRArmSMEDialect.a  lib/libMLIRSparseTe
ect.a  lib/libMLIRSparseTensorTransforms.a  lib/libMLIRLinalgTransforms.a  lib/libMLIRMemRefTransforms.a  lib/libMLIRArithTransforms.a  lib/libMLIRFuncTransforms.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRFuncToLLVM.a  lib/libMLIRArithToLLVM.a  lib/libMLIRControlFlowToLLVM.a  lib/libMLIRSCFTransforms.a  lib/libMLIRSparseTensorUtils.a  lib/libMLIRSPIRVModuleCombiner.a  lib/libMLIRSPIRVTransforms.a  lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorInferTypeOpInterfaceImpl.a  lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRLinalgUtils.a  lib/libMLIRTensorTransformOps.a  lib/libMLIRTensorTransforms.a  lib/libMLIRAffineTransforms.a  lib/libMLIRSCFUtils.a  lib/libMLIRTensorUtils.a  lib/libMLIRTosaShardingInterfaceImpl.a  lib/libMLIRShardingInterface.a  lib/libMLIRMeshDialect.a  lib/libMLIRTosaTransforms.a  lib/libMLIRTransformDebugExtension.a  lib/libMLIRTransformLoopExtension.a  lib/libMLIRTransformPDLExtension.a  lib/libMLIRTransformDialectTransforms.a  lib/libMLIRVectorTransformOps.a  lib/libMLIRTransformDialect.a  lib/libMLIRTransformDialectUtils.a  lib/libMLIRVectorToLLVM.a  lib/libMLIRVectorToSCF.a  lib/libMLIRVectorTransforms.a  lib/libMLIRAffineUtils.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRLinalgDialect.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRMathDialect.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRTilingInterface.a  lib/libMLIRMemRefUtils.a  lib/libMLIRX86VectorTransforms.a  lib/libMLIRVectorUtils.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRSCFDialect.a  lib/libMLIRVectorDialect.a  lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a  lib/libMLIRX86VectorDialect.a  lib/libMLIRLLVMCommonConversion.a  lib/libMLIRSPIRVTarget.a  lib/libMLIRSPIRVSerialization.a  lib/libMLIRSPIRVBinaryUtils.a  lib/libMLIRSPIRVDialect.a  lib/libMLIRNVVMTarget.a  lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIRROCDLTarget.a  lib/libMLIRGPUDialect.a  lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a  lib/libMLIRTargetLLVM.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRDLTIDialect.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRTransforms.a  lib/libMLIRCopyOpInterface.a  lib/libMLIRRuntimeVerifiableOpInterface.a  lib/libMLIRNVVMDialect.a  lib/libMLIRTranslateLib.a  lib/libMLIRParser.a  lib/libMLIRBytecodeReader.a  lib/libMLIRAsmParser.a  lib/libMLIRExecutionEngineUtils.a  lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a  lib/libMLIRTosaDialect.a  lib/libMLIRQuantUtils.a  lib/libMLIRQuantDialect.a  lib/libMLIRTensorDialect.a  lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a  lib/libMLIRDialectUtils.a  lib/libMLIRArithUtils.a  lib/libMLIRComplexDialect.a  lib/libMLIRArithAttrToLLVMConversion.a  lib/libMLIRLLVMDialect.a  lib/libMLIRMemorySlotInterfaces.a  lib/libMLIRShapedOpInterfaces.a  lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRVectorInterfaces.a  lib/libMLIRTransformUtils.a  lib/libMLIRSubsetOpInterface.a  lib/libMLIRValueBoundsOpInterface.a  lib/libMLIRDestinationStyleOpInterface.a  lib/libMLIRRewrite.a  lib/libMLIRRewritePDL.a  lib/libMLIRPDLToPDLInterp.a  lib/libMLIRPDLInterpDialect.a  lib/libMLIRPDLDialect.a  lib/libMLIRFuncAllExtensions.a  lib/libMLIRFuncInlinerExtension.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRArithDialect.a  lib/libMLIRUBDialect.a  lib/libMLIRCastInterfaces.a  lib/libMLIRDialect.a  lib/libMLIRInferIntRangeCommon.a  lib/libMLIRFuncDialect.a  lib/libclang-cpp.so.18.1  lib/libMLIRPass.a  lib/libMLIRAnalysis.a  lib/libMLIRLoopLikeInterface.a  lib/libMLIRFunctionInterfaces.a  lib/libMLIRSideEffectInterfaces.a  lib/libMLIRCallInterfaces.a  lib/libMLIRControlFlowInterfaces.a  lib/libMLIRInferTypeOpInterface.a  lib/libMLIRPresburger.a  lib/libMLIRViewLikeInterface.a  lib/libMLIRInferIntRangeInterface.a  lib/libMLIRDataLayoutInterfaces.a  lib/libMLIRIR.a  lib/libMLIRSupport.a  lib/libLLVM.so.18.1 && :
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Running pass 'PPC Merge String Pool' on module 'lib/libFortranSemantics.a(resolve-directives.cpp.o at 306474380)'.
clang++: error: unable to execute command: Segmentation fault
clang++: error: linker command failed due to signal (use -v to see invocation)

on ppc64:

FAILED: bin/llvm-exegesis 
: && /builddir/llvm-18.1.6/boot-clang++ -ffile-prefix-map=/builddir/llvm-18.1.6=. -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -fno-omit-frame-pointer -flto=thin -mcpu=970 -mtune=power9 -O2 -fPIC -g1 -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -O3 -DNDEBUG -Wl,-z,pack-relative-relocs -fno-omit-frame-pointer -flto=thin -fuse-ld=/usr/lib/llvm-bootstrap/bin/ld.lld -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-cache-dir=/builddir/llvm-18.1.6/build/lto.cache    -Wl,--gc-sections tools/llvm-exegesis/CMakeFiles/llvm-exegesis.dir/llvm-exegesis.cpp.o -o bin/llvm-exegesis  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMLoongArchAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMVEAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMLoongArchCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMVECodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMARMDesc.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMVEDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAMDGPUDisassembler.a  lib/libLLVMARMDisassembler.a  lib/libLLVMAVRDisassembler.a  lib/libLLVMBPFDisassembler.a  lib/libLLVMHexagonDisassembler.a  lib/libLLVMLanaiDisassembler.a  lib/libLLVMLoongArchDisassembler.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMSP430Disassembler.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMRISCVDisassembler.a  lib/libLLVMSparcDisassembler.a  lib/libLLVMSystemZDisassembler.a  lib/libLLVMVEDisassembler.a  lib/libLLVMWebAssemblyDisassembler.a  lib/libLLVMX86Disassembler.a  lib/libLLVMXCoreDisassembler.a  lib/libLLVMAArch64Info.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMNVPTXInfo.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMVEInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMMC.a  lib/libLLVMMCParser.a  lib/libLLVMSupport.a  lib/libLLVMTargetParser.a  lib/libLLVMExegesis.a  lib/libLLVMExegesisX86.a  lib/libLLVMExegesisAArch64.a  lib/libLLVMExegesisPowerPC.a  lib/libLLVMExegesisMips.a  lib/libLLVMMIRParser.a  lib/libLLVMHexagonAsmParser.a  li
  lib/libLLVMAMDGPUInfo.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMARMDesc.a  lib/libLLVMARMInfo.a  lib/libLLVMARMUtils.a  lib/libLLVMHexagonDesc.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMRISCVDesc.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSystemZDesc.a  lib/libLLVMSystemZInfo.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86AsmParser.a  lib/libLLVMX86CodeGen.a  lib/libLLVMX86Desc.a  lib/libLLVMX86Disassembler.a  lib/libLLVMX86Info.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMMipsDesc.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMipsInfo.a  lib/libLLVMExegesis.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMMCDisassembler.a  lib/libLLVMMCA.a  lib/libLLVMObjectYAML.a  lib/libLLVMOrcJIT.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMCodeGen.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMHipStdPar.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMVectorize.a  lib/libLLVMInstrumentation.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMLinker.a  lib/libLLVMTransformUtils.a  lib/libLLVMExecutionEngine.a  lib/libLLVMTarget.a  lib/libLLVMBitWriter.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMJITLink.a  lib/libLLVMOrcTargetProcess.a  lib/libLLVMOrcShared.a  lib/libLLVMWindowsDriver.a  lib/libLLVMOption.a  lib/libLLVMRuntimeDyld.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMTextAPI.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/libz.so  /usr/lib/libzstd.so  /usr/lib/libcurses.so  lib/libLLVMDemangle.a && :
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Running pass 'PPC Merge String Pool' on module 'lib/libLLVMX86CodeGen.a(X86TargetMachine.cpp.o at 20709228)'.
clang++: error: unable to execute command: Segmentation fault
clang++: error: linker command failed due to signal (use -v to see invocation)

18.1.5 was fine, so given the error i assume it was that PPCMergeStringPool change specifically (no manual bisect).

backtrace on ppc64le: https://img.ayaya.dev/T096XJsi3Clz (issue body limit) (i don't have one for ppc64), rerunning it manually seems to have failed on exegesis instead of flang too:

FAILED: bin/llvm-exegesis 
: && /builddir/llvm-18.1.6/boot-clang++ -ffile-prefix-map=/builddir/llvm-18.1.6=. -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -fno-omit-frame-pointer -flto=thin -mtune=power9 -O2 -fPIC -g1 -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -O3 -DNDEBUG -Wl,-z,pack-relative-relocs -fno-omit-frame-pointer -flto=thin -Wl,--thinlto-cache-policy=cache_size_bytes=8192m,--thinlto-cache-dir=/cbuild_cache/link-cache -fuse-ld=/usr/lib/llvm-bootstrap/bin/ld.lld -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-cache-dir=/builddir/llvm-18.1.6/build/lto.cache    -Wl,--gc-sections tools/llvm-exegesis/CMakeFiles/llvm-exegesis.dir/llvm-exegesis.cpp.o -o bin/llvm-exegesis  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMLoongArchAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMVEAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMLoongArchCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMVECodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMARMDesc.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMVEDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAMDGPUDisassembler.a  lib/libLLVMARMDisassembler.a  lib/libLLVMAVRDisassembler.a  lib/libLLVMBPFDisassembler.a  lib/libLLVMHexagonDisassembler.a  lib/libLLVMLanaiDisassembler.a  lib/libLLVMLoongArchDisassembler.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMSP430Disassembler.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMRISCVDisassembler.a  lib/libLLVMSparcDisassembler.a  lib/libLLVMSystemZDisassembler.a  lib/libLLVMVEDisassembler.a  lib/libLLVMWebAssemblyDisassembler.a  lib/libLLVMX86Disassembler.a  lib/libLLVMXCoreDisassembler.a  lib/libLLVMAArch64Info.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMNVPTXInfo.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMVEInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMMC.a  lib/libLLVMMCParser.a  lib/libLLVMSupport.a  lib/libLLVMTargetParser.a  lib/libLLVMExegesis.a  lib/libLLVMExegesisX86.a  lib/libLLVMExegesisAArch64.a  lib/libLLVMExegesisPowerPC.a  lib/libLLVMExegesisMips.a  lib/libLLVMMIRParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMWebAssemblyUtils.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMARMDesc.a  lib/libLLVMARMInfo.a  lib/libLLVMARMUtils.a  lib/libLLVMHexagonDesc.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMRISCVDesc.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSystemZDesc.a  lib/libLLVMSystemZInfo.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86AsmParser.a  lib/libLLVMX86CodeGen.a  lib/libLLVMX86Desc.a  lib/libLLVMX86Disassembler.a  lib/libLLVMX86Info.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMMipsDesc.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMipsInfo.a  lib/libLLVMExegesis.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMMCDisassembler.a  lib/libLLVMMCA.a  lib/libLLVMObjectYAML.a  lib/libLLVMOrcJIT.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMCodeGen.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMHipStdPar.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMVectorize.a  lib/libLLVMInstrumentation.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMLinker.a  lib/libLLVMTransformUtils.a  lib/libLLVMExecutionEngine.a  lib/libLLVMTarget.a  lib/libLLVMBitWriter.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMJITLink.a  lib/libLLVMOrcTargetProcess.a  lib/libLLVMOrcShared.a  lib/libLLVMWindowsDriver.a  lib/libLLVMOption.a  lib/libLLVMRuntimeDyld.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMTextAPI.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/libz.so  /usr/lib/libzstd.so  /usr/lib/libcurses.so  lib/libLLVMDemangle.a && :
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Running pass 'PPC Merge String Pool' on module 'lib/libLLVMX86CodeGen.a(X86TargetMachine.cpp.o at 20688330)'.
clang++: error: unable to execute command: Segmentation fault (core dumped)

cc @nikic

@github-actions github-actions bot added the clang Clang issues not falling into any other category label May 22, 2024
@EugeneZelenko EugeneZelenko added backend:PowerPC crash Prefer [crash-on-valid] or [crash-on-invalid] regression and removed clang Clang issues not falling into any other category labels May 22, 2024
@llvmbot
Copy link
Member

llvmbot commented May 22, 2024

@llvm/issue-subscribers-backend-powerpc

Author: alice (nekopsykose)

probably caused by https://github.com//pull/91557

on ppc64le:

FAILED: bin/flang-new 
: && /builddir/llvm-18.1.6/boot-clang++ -ffile-prefix-map=/builddir/llvm-18.1.6=. -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -fno-omit-frame-pointer -flto=thin -mtune=power9 -O2 -fPIC -g1 -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -Wno-deprecated-copy -Wno-string-conversion -Wno-ctad-maybe-unsupported -Wno-unused-command-line-argument -Wstring-conversion           -Wcovered-switch-default -Wno-nested-anon-types -O3 -DNDEBUG -Wl,-z,pack-relative-relocs -fno-omit-frame-pointer -flto=thin -fuse-ld=/usr/lib/llvm-bootstrap/bin/ld.lld -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-cache-dir=/builddir/llvm-18.1.6/build/lto.cache   -Wl,--export-dynamic  -Wl,--gc-sections tools/flang/tools/flang-driver/CMakeFiles/flang-new.dir/driver.cpp.o tools/flang/tools/flang-driver/CMakeFiles/flang-new.dir/fc1_main.cpp.o -o bin/flang-new -L/builddir/llvm-18.1.6/build/./lib -Wl,-rpath,"\$ORIGIN/../lib:/builddir/llvm-18.1.6/build/./lib:/builddir/llvm-18.1.6/build/lib:"  lib/libflangFrontend.a  lib/libflangFrontendTool.a  lib/libflangFrontend.a  lib/libFortranLower.a  lib/libFortranSemantics.a  lib/libFortranEvaluate.a  lib/libFortranParser.a  lib/libFortranDecimal.a  lib/libFortranCommon.a  lib/libFIRTransforms.a  lib/libFIRCodeGen.a  lib/libMLIRMathToFuncs.a  lib/libHLFIRTransforms.a  lib/libFIRAnalysis.a  lib/libFIRBuilder.a  lib/libFIRSupport.a  lib/libMLIROpenACCToLLVMIRTranslation.a  lib/libMLIROpenMPToLLVMIRTranslation.a  lib/libHLFIRDialect.a  lib/libFIRDialect.a  lib/libFIRDialectSupport.a  lib/libMLIROpenMPToLLVM.a  lib/libMLIRTargetLLVMIRImport.a  lib/libMLIRAffineTransformOps.a  lib/libMLIRAMDGPUTransforms.a  lib/libMLIRAMDGPUUtils.a  lib/libMLIRAMDGPUDialect.a  lib/libMLIRArithValueBoundsOpInterfaceImpl.a  lib/libMLIRAsyncTransforms.a  lib/libMLIRBufferizationPipelines.a  lib/libMLIRBufferizationTransformOps.a  lib/libMLIRControlFlowTransforms.a  lib/libMLIREmitCTransforms.a  lib/libMLIREmitCDialect.a  lib/libMLIRFuncTransformOps.a  lib/libMLIRGPUTransformOps.a  lib/libMLIRGPUPipelines.a  lib/libMLIRIndexToLLVM.a  lib/libMLIRNVVMToLLVM.a  lib/libMLIRIRDL.a  lib/libMLIRMathTransforms.a  lib/libMLIRMemRefTransformOps.a  lib/libMLIRMeshTransforms.a  lib/libMLIRMLProgramTransforms.a  lib/libMLIRMLProgramDialect.a  lib/libMLIRNVGPUUtils.a  lib/libMLIRNVGPUTransformOps.a  lib/libMLIRNVGPUToNVVM.a  lib/libMLIRNVGPUTransforms.a  lib/libMLIROpenACCDialect.a  lib/libMLIROpenMPDialect.a  lib/libMLIROpenACCMPCommon.a  lib/libMLIRSCFTransformOps.a  lib/libMLIRShapeOpsTransforms.a  lib/libMLIRShapeDialect.a  lib/libMLIRSparseTensorPipelines.a  lib/libMLIRSCFToControlFlow.a  lib/libMLIRAffineToStandard.a  lib/libMLIRComplexToLLVM.a  lib/libMLIRComplexToStandard.a  lib/libMLIRMathToLLVM.a  lib/libMLIRMathToLibm.a  lib/libMLIRGPUToNVVMTransforms.a  lib/libMLIRGPUToGPURuntimeTransforms.a  lib/libMLIRGPUTransforms.a  lib/libMLIRBuiltinToLLVMIRTranslation.a  lib/libMLIRLLVMToLLVMIRTranslation.a  lib/libMLIRGPUToLLVMIRTranslation.a  lib/libMLIRAsyncToLLVM.a  lib/libMLIRAsyncDialect.a  lib/libMLIRConvertToLLVMPass.a  lib/libMLIRConvertToLLVMInterface.a  lib/libMLIRReconcileUnrealizedCasts.a  lib/libMLIRComplexToLibm.a  lib/libMLIRMemRefToLLVM.a  lib/libMLIRVectorToLLVMPass.a  lib/libMLIRAMXTransforms.a  lib/libMLIRAMXDialect.a  lib/libMLIRArmNeonDialect.a  lib/libMLIRArmSMETransforms.a  lib/libMLIRArmSVETransforms.a  lib/libMLIRArmSVEDialect.a  lib/libMLIRVectorToArmSME.a  lib/libMLIRArmSMEDialect.a  lib/libMLIRSparseTe
ect.a  lib/libMLIRSparseTensorTransforms.a  lib/libMLIRLinalgTransforms.a  lib/libMLIRMemRefTransforms.a  lib/libMLIRArithTransforms.a  lib/libMLIRFuncTransforms.a  lib/libMLIRNVGPUDialect.a  lib/libMLIRFuncToLLVM.a  lib/libMLIRArithToLLVM.a  lib/libMLIRControlFlowToLLVM.a  lib/libMLIRSCFTransforms.a  lib/libMLIRSparseTensorUtils.a  lib/libMLIRSPIRVModuleCombiner.a  lib/libMLIRSPIRVTransforms.a  lib/libMLIRSPIRVConversion.a  lib/libMLIRSPIRVUtils.a  lib/libMLIRTensorInferTypeOpInterfaceImpl.a  lib/libMLIRTensorTilingInterfaceImpl.a  lib/libMLIRLinalgUtils.a  lib/libMLIRTensorTransformOps.a  lib/libMLIRTensorTransforms.a  lib/libMLIRAffineTransforms.a  lib/libMLIRSCFUtils.a  lib/libMLIRTensorUtils.a  lib/libMLIRTosaShardingInterfaceImpl.a  lib/libMLIRShardingInterface.a  lib/libMLIRMeshDialect.a  lib/libMLIRTosaTransforms.a  lib/libMLIRTransformDebugExtension.a  lib/libMLIRTransformLoopExtension.a  lib/libMLIRTransformPDLExtension.a  lib/libMLIRTransformDialectTransforms.a  lib/libMLIRVectorTransformOps.a  lib/libMLIRTransformDialect.a  lib/libMLIRTransformDialectUtils.a  lib/libMLIRVectorToLLVM.a  lib/libMLIRVectorToSCF.a  lib/libMLIRVectorTransforms.a  lib/libMLIRAffineUtils.a  lib/libMLIRBufferizationTransforms.a  lib/libMLIRLinalgDialect.a  lib/libMLIRBufferizationDialect.a  lib/libMLIRMathDialect.a  lib/libMLIRSparseTensorDialect.a  lib/libMLIRTilingInterface.a  lib/libMLIRMemRefUtils.a  lib/libMLIRX86VectorTransforms.a  lib/libMLIRVectorUtils.a  lib/libMLIRAffineAnalysis.a  lib/libMLIRSCFDialect.a  lib/libMLIRVectorDialect.a  lib/libMLIRMaskableOpInterface.a  lib/libMLIRMaskingOpInterface.a  lib/libMLIRX86VectorDialect.a  lib/libMLIRLLVMCommonConversion.a  lib/libMLIRSPIRVTarget.a  lib/libMLIRSPIRVSerialization.a  lib/libMLIRSPIRVBinaryUtils.a  lib/libMLIRSPIRVDialect.a  lib/libMLIRNVVMTarget.a  lib/libMLIRNVVMToLLVMIRTranslation.a  lib/libMLIRROCDLTarget.a  lib/libMLIRGPUDialect.a  lib/libMLIRROCDLToLLVMIRTranslation.a  lib/libMLIRROCDLDialect.a  lib/libMLIRTargetLLVM.a  lib/libMLIRTargetLLVMIRExport.a  lib/libMLIRDLTIDialect.a  lib/libMLIRLLVMIRTransforms.a  lib/libMLIRTransforms.a  lib/libMLIRCopyOpInterface.a  lib/libMLIRRuntimeVerifiableOpInterface.a  lib/libMLIRNVVMDialect.a  lib/libMLIRTranslateLib.a  lib/libMLIRParser.a  lib/libMLIRBytecodeReader.a  lib/libMLIRAsmParser.a  lib/libMLIRExecutionEngineUtils.a  lib/libMLIRTestDynDialect.a  lib/libMLIRTosaTestPasses.a  lib/libMLIRTosaDialect.a  lib/libMLIRQuantUtils.a  lib/libMLIRQuantDialect.a  lib/libMLIRTensorDialect.a  lib/libMLIRAffineDialect.a  lib/libMLIRMemRefDialect.a  lib/libMLIRDialectUtils.a  lib/libMLIRArithUtils.a  lib/libMLIRComplexDialect.a  lib/libMLIRArithAttrToLLVMConversion.a  lib/libMLIRLLVMDialect.a  lib/libMLIRMemorySlotInterfaces.a  lib/libMLIRShapedOpInterfaces.a  lib/libMLIRParallelCombiningOpInterface.a  lib/libMLIRVectorInterfaces.a  lib/libMLIRTransformUtils.a  lib/libMLIRSubsetOpInterface.a  lib/libMLIRValueBoundsOpInterface.a  lib/libMLIRDestinationStyleOpInterface.a  lib/libMLIRRewrite.a  lib/libMLIRRewritePDL.a  lib/libMLIRPDLToPDLInterp.a  lib/libMLIRPDLInterpDialect.a  lib/libMLIRPDLDialect.a  lib/libMLIRFuncAllExtensions.a  lib/libMLIRFuncInlinerExtension.a  lib/libMLIRControlFlowDialect.a  lib/libMLIRArithDialect.a  lib/libMLIRUBDialect.a  lib/libMLIRCastInterfaces.a  lib/libMLIRDialect.a  lib/libMLIRInferIntRangeCommon.a  lib/libMLIRFuncDialect.a  lib/libclang-cpp.so.18.1  lib/libMLIRPass.a  lib/libMLIRAnalysis.a  lib/libMLIRLoopLikeInterface.a  lib/libMLIRFunctionInterfaces.a  lib/libMLIRSideEffectInterfaces.a  lib/libMLIRCallInterfaces.a  lib/libMLIRControlFlowInterfaces.a  lib/libMLIRInferTypeOpInterface.a  lib/libMLIRPresburger.a  lib/libMLIRViewLikeInterface.a  lib/libMLIRInferIntRangeInterface.a  lib/libMLIRDataLayoutInterfaces.a  lib/libMLIRIR.a  lib/libMLIRSupport.a  lib/libLLVM.so.18.1 && :
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Running pass 'PPC Merge String Pool' on module 'lib/libFortranSemantics.a(resolve-directives.cpp.o at 306474380)'.
clang++: error: unable to execute command: Segmentation fault
clang++: error: linker command failed due to signal (use -v to see invocation)

on ppc64:

FAILED: bin/llvm-exegesis 
: && /builddir/llvm-18.1.6/boot-clang++ -ffile-prefix-map=/builddir/llvm-18.1.6=. -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -fno-omit-frame-pointer -flto=thin -mcpu=970 -mtune=power9 -O2 -fPIC -g1 -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -O3 -DNDEBUG -Wl,-z,pack-relative-relocs -fno-omit-frame-pointer -flto=thin -fuse-ld=/usr/lib/llvm-bootstrap/bin/ld.lld -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-cache-dir=/builddir/llvm-18.1.6/build/lto.cache    -Wl,--gc-sections tools/llvm-exegesis/CMakeFiles/llvm-exegesis.dir/llvm-exegesis.cpp.o -o bin/llvm-exegesis  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMLoongArchAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMVEAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMLoongArchCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMVECodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMARMDesc.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMVEDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAMDGPUDisassembler.a  lib/libLLVMARMDisassembler.a  lib/libLLVMAVRDisassembler.a  lib/libLLVMBPFDisassembler.a  lib/libLLVMHexagonDisassembler.a  lib/libLLVMLanaiDisassembler.a  lib/libLLVMLoongArchDisassembler.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMSP430Disassembler.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMRISCVDisassembler.a  lib/libLLVMSparcDisassembler.a  lib/libLLVMSystemZDisassembler.a  lib/libLLVMVEDisassembler.a  lib/libLLVMWebAssemblyDisassembler.a  lib/libLLVMX86Disassembler.a  lib/libLLVMXCoreDisassembler.a  lib/libLLVMAArch64Info.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMNVPTXInfo.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMVEInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMMC.a  lib/libLLVMMCParser.a  lib/libLLVMSupport.a  lib/libLLVMTargetParser.a  lib/libLLVMExegesis.a  lib/libLLVMExegesisX86.a  lib/libLLVMExegesisAArch64.a  lib/libLLVMExegesisPowerPC.a  lib/libLLVMExegesisMips.a  lib/libLLVMMIRParser.a  lib/libLLVMHexagonAsmParser.a  li
  lib/libLLVMAMDGPUInfo.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMARMDesc.a  lib/libLLVMARMInfo.a  lib/libLLVMARMUtils.a  lib/libLLVMHexagonDesc.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMRISCVDesc.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSystemZDesc.a  lib/libLLVMSystemZInfo.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86AsmParser.a  lib/libLLVMX86CodeGen.a  lib/libLLVMX86Desc.a  lib/libLLVMX86Disassembler.a  lib/libLLVMX86Info.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMMipsDesc.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMipsInfo.a  lib/libLLVMExegesis.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMMCDisassembler.a  lib/libLLVMMCA.a  lib/libLLVMObjectYAML.a  lib/libLLVMOrcJIT.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMCodeGen.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMHipStdPar.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMVectorize.a  lib/libLLVMInstrumentation.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMLinker.a  lib/libLLVMTransformUtils.a  lib/libLLVMExecutionEngine.a  lib/libLLVMTarget.a  lib/libLLVMBitWriter.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMJITLink.a  lib/libLLVMOrcTargetProcess.a  lib/libLLVMOrcShared.a  lib/libLLVMWindowsDriver.a  lib/libLLVMOption.a  lib/libLLVMRuntimeDyld.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMTextAPI.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/libz.so  /usr/lib/libzstd.so  /usr/lib/libcurses.so  lib/libLLVMDemangle.a && :
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Running pass 'PPC Merge String Pool' on module 'lib/libLLVMX86CodeGen.a(X86TargetMachine.cpp.o at 20709228)'.
clang++: error: unable to execute command: Segmentation fault
clang++: error: linker command failed due to signal (use -v to see invocation)

18.1.5 was fine, so given the error i assume it was that PPCMergeStringPool change specifically (no manual bisect).

backtrace on ppc64le: https://img.ayaya.dev/T096XJsi3Clz (issue body limit) (i don't have one for ppc64), rerunning it manually seems to have failed on exegesis instead of flang too:

FAILED: bin/llvm-exegesis 
: && /builddir/llvm-18.1.6/boot-clang++ -ffile-prefix-map=/builddir/llvm-18.1.6=. -Wformat -Werror=format-security -ftrivial-auto-var-init=zero -fstack-clash-protection -fno-omit-frame-pointer -flto=thin -mtune=power9 -O2 -fPIC -g1 -stdlib=libc++ -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -ffunction-sections -fdata-sections -flto=thin -O3 -DNDEBUG -Wl,-z,pack-relative-relocs -fno-omit-frame-pointer -flto=thin -Wl,--thinlto-cache-policy=cache_size_bytes=8192m,--thinlto-cache-dir=/cbuild_cache/link-cache -fuse-ld=/usr/lib/llvm-bootstrap/bin/ld.lld -stdlib=libc++ -fuse-ld=lld -Wl,--color-diagnostics -flto=thin -Wl,--thinlto-cache-dir=/builddir/llvm-18.1.6/build/lto.cache    -Wl,--gc-sections tools/llvm-exegesis/CMakeFiles/llvm-exegesis.dir/llvm-exegesis.cpp.o -o bin/llvm-exegesis  -Wl,-rpath,"\$ORIGIN/../lib:"  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAMDGPUAsmParser.a  lib/libLLVMARMAsmParser.a  lib/libLLVMAVRAsmParser.a  lib/libLLVMBPFAsmParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMLoongArchAsmParser.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMSP430AsmParser.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMRISCVAsmParser.a  lib/libLLVMSparcAsmParser.a  lib/libLLVMSystemZAsmParser.a  lib/libLLVMVEAsmParser.a  lib/libLLVMWebAssemblyAsmParser.a  lib/libLLVMX86AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAMDGPUCodeGen.a  lib/libLLVMARMCodeGen.a  lib/libLLVMAVRCodeGen.a  lib/libLLVMBPFCodeGen.a  lib/libLLVMHexagonCodeGen.a  lib/libLLVMLanaiCodeGen.a  lib/libLLVMLoongArchCodeGen.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMMSP430CodeGen.a  lib/libLLVMNVPTXCodeGen.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMRISCVCodeGen.a  lib/libLLVMSparcCodeGen.a  lib/libLLVMSystemZCodeGen.a  lib/libLLVMVECodeGen.a  lib/libLLVMWebAssemblyCodeGen.a  lib/libLLVMX86CodeGen.a  lib/libLLVMXCoreCodeGen.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMARMDesc.a  lib/libLLVMAVRDesc.a  lib/libLLVMBPFDesc.a  lib/libLLVMHexagonDesc.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMMipsDesc.a  lib/libLLVMMSP430Desc.a  lib/libLLVMNVPTXDesc.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMRISCVDesc.a  lib/libLLVMSparcDesc.a  lib/libLLVMSystemZDesc.a  lib/libLLVMVEDesc.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMX86Desc.a  lib/libLLVMXCoreDesc.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAMDGPUDisassembler.a  lib/libLLVMARMDisassembler.a  lib/libLLVMAVRDisassembler.a  lib/libLLVMBPFDisassembler.a  lib/libLLVMHexagonDisassembler.a  lib/libLLVMLanaiDisassembler.a  lib/libLLVMLoongArchDisassembler.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMSP430Disassembler.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMRISCVDisassembler.a  lib/libLLVMSparcDisassembler.a  lib/libLLVMSystemZDisassembler.a  lib/libLLVMVEDisassembler.a  lib/libLLVMWebAssemblyDisassembler.a  lib/libLLVMX86Disassembler.a  lib/libLLVMXCoreDisassembler.a  lib/libLLVMAArch64Info.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMARMInfo.a  lib/libLLVMAVRInfo.a  lib/libLLVMBPFInfo.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMMipsInfo.a  lib/libLLVMMSP430Info.a  lib/libLLVMNVPTXInfo.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSparcInfo.a  lib/libLLVMSystemZInfo.a  lib/libLLVMVEInfo.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86Info.a  lib/libLLVMXCoreInfo.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMMC.a  lib/libLLVMMCParser.a  lib/libLLVMSupport.a  lib/libLLVMTargetParser.a  lib/libLLVMExegesis.a  lib/libLLVMExegesisX86.a  lib/libLLVMExegesisAArch64.a  lib/libLLVMExegesisPowerPC.a  lib/libLLVMExegesisMips.a  lib/libLLVMMIRParser.a  lib/libLLVMHexagonAsmParser.a  lib/libLLVMLanaiAsmParser.a  lib/libLLVMWebAssemblyUtils.a  lib/libLLVMAMDGPUDesc.a  lib/libLLVMAMDGPUInfo.a  lib/libLLVMAMDGPUUtils.a  lib/libLLVMARMDesc.a  lib/libLLVMARMInfo.a  lib/libLLVMARMUtils.a  lib/libLLVMHexagonDesc.a  lib/libLLVMHexagonInfo.a  lib/libLLVMLanaiDesc.a  lib/libLLVMLanaiInfo.a  lib/libLLVMLoongArchDesc.a  lib/libLLVMLoongArchInfo.a  lib/libLLVMRISCVDesc.a  lib/libLLVMRISCVInfo.a  lib/libLLVMSystemZDesc.a  lib/libLLVMSystemZInfo.a  lib/libLLVMWebAssemblyDesc.a  lib/libLLVMWebAssemblyInfo.a  lib/libLLVMX86AsmParser.a  lib/libLLVMX86CodeGen.a  lib/libLLVMX86Desc.a  lib/libLLVMX86Disassembler.a  lib/libLLVMX86Info.a  lib/libLLVMAArch64AsmParser.a  lib/libLLVMAArch64CodeGen.a  lib/libLLVMAArch64Disassembler.a  lib/libLLVMAArch64Desc.a  lib/libLLVMAArch64Info.a  lib/libLLVMAArch64Utils.a  lib/libLLVMPowerPCAsmParser.a  lib/libLLVMPowerPCCodeGen.a  lib/libLLVMPowerPCDesc.a  lib/libLLVMPowerPCDisassembler.a  lib/libLLVMPowerPCInfo.a  lib/libLLVMMipsAsmParser.a  lib/libLLVMMipsCodeGen.a  lib/libLLVMAsmPrinter.a  lib/libLLVMMipsDesc.a  lib/libLLVMMipsDisassembler.a  lib/libLLVMMipsInfo.a  lib/libLLVMExegesis.a  lib/libLLVMGlobalISel.a  lib/libLLVMSelectionDAG.a  lib/libLLVMMCDisassembler.a  lib/libLLVMMCA.a  lib/libLLVMObjectYAML.a  lib/libLLVMOrcJIT.a  lib/libLLVMPasses.a  lib/libLLVMCFGuard.a  lib/libLLVMCodeGen.a  lib/libLLVMCodeGenTypes.a  lib/libLLVMHipStdPar.a  lib/libLLVMIRPrinter.a  lib/libLLVMObjCARCOpts.a  lib/libLLVMCoroutines.a  lib/libLLVMipo.a  lib/libLLVMVectorize.a  lib/libLLVMInstrumentation.a  lib/libLLVMFrontendOpenMP.a  lib/libLLVMScalarOpts.a  lib/libLLVMAggressiveInstCombine.a  lib/libLLVMInstCombine.a  lib/libLLVMFrontendOffloading.a  lib/libLLVMLinker.a  lib/libLLVMTransformUtils.a  lib/libLLVMExecutionEngine.a  lib/libLLVMTarget.a  lib/libLLVMBitWriter.a  lib/libLLVMAnalysis.a  lib/libLLVMProfileData.a  lib/libLLVMSymbolize.a  lib/libLLVMDebugInfoDWARF.a  lib/libLLVMDebugInfoPDB.a  lib/libLLVMDebugInfoMSF.a  lib/libLLVMDebugInfoBTF.a  lib/libLLVMJITLink.a  lib/libLLVMOrcTargetProcess.a  lib/libLLVMOrcShared.a  lib/libLLVMWindowsDriver.a  lib/libLLVMOption.a  lib/libLLVMRuntimeDyld.a  lib/libLLVMObject.a  lib/libLLVMMCParser.a  lib/libLLVMMC.a  lib/libLLVMDebugInfoCodeView.a  lib/libLLVMIRReader.a  lib/libLLVMBitReader.a  lib/libLLVMAsmParser.a  lib/libLLVMTextAPI.a  lib/libLLVMCore.a  lib/libLLVMBinaryFormat.a  lib/libLLVMTargetParser.a  lib/libLLVMRemarks.a  lib/libLLVMBitstreamReader.a  lib/libLLVMSupport.a  -lrt  -ldl  -lm  /usr/lib/libz.so  /usr/lib/libzstd.so  /usr/lib/libcurses.so  lib/libLLVMDemangle.a && :
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.	Running pass 'PPC Merge String Pool' on module 'lib/libLLVMX86CodeGen.a(X86TargetMachine.cpp.o at 20688330)'.
clang++: error: unable to execute command: Segmentation fault (core dumped)

cc @nikic

@nikic
Copy link
Contributor

nikic commented May 22, 2024

I see what the problem is. I'll see if it's possible to construct a test case.

nikic added a commit to nikic/llvm-project that referenced this issue May 22, 2024
In llvm#88846 I changed this code to use RAUW to perform the replacement
instead of manual updates -- but kept the outer loop, which means
we try to perform RAUW once per user. However, some of the users
might be freed by the RAUW operation, resulting in use-after-free.

I think the case where this happens is constant users where the
replacement might result in the destruction of the original
constant. I wasn't able to come up with a test case though.

This is intended to fix llvm#92991.
@nikic
Copy link
Contributor

nikic commented May 22, 2024

Candidate fix at #92996. I'm reasonably sure that this is the problem, but I didn't manage to come up with a test case. If you could dump the bitcode so I can reduce it that would be great.

@nikic
Copy link
Contributor

nikic commented May 22, 2024

@tstellar This issue may warrant another point release.

@nekopsykose
Copy link
Author

what would you like the bitcode of? X86TargetMachine.cpp.o? what command should i use (llvm-dis)? i could also upload the whole object somewhere

@nikic
Copy link
Contributor

nikic commented May 22, 2024

@nekopsykose The fact that this is a ThinLTO build makes it a bit tricky. I think the best way is to pass -Wl,-plugin-opt=save-temps to the clang command, which will dump out a whole bunch of bitcode files. There should be a *.precodegen.bc file for X86TargetMachine.cpp.o, which is the one we need. (Possibly the original object file also works, depends on whether the changes done by ThinLTO are needed to reproduce.)

@nekopsykose
Copy link
Author

sorry, that took forever. the builds take a while and this actually.. does not trigger every time :)

here is the .bc (was named libLLVMX86CodeGen.a(X86TargetMachine.cpp.o at 20687794).5.precodegen.bc) https://img.ayaya.dev/8G7kPFnLf1Rx

ran through llvm-dis for .ll https://img.ayaya.dev/pNwwzqUBr2lq (but i think you know the rest)

hopefully that is helpful; i still have all the temps laying around

@nikic
Copy link
Contributor

nikic commented May 23, 2024

@nekopsykose Thanks! I've reduced this to the following test case, which produces a use-after-free error under address sanitizer:

target triple = "powerpc64le-unknown-linux-gnu"

@g = private constant [4 x i32] [i32 122, i32 67, i32 35, i32 56]
@g2 = private constant [1 x i64] [i64 1], align 8

define void @test(ptr %p, ptr %p2) {
  store ptr getelementptr inbounds ([4 x i32], ptr @g, i64 0, i64 1), ptr %p
  store ptr getelementptr inbounds ([4 x i32], ptr @g, i64 0, i64 2), ptr %p2
  ret void
}

This is very similar to how originally tried to reproduce this, but it turns out that the used GEP type is important here -- we don't get the use-after free with i8 GEPs for whatever reason.

nikic added a commit to nikic/llvm-project that referenced this issue May 23, 2024
In llvm#88846 I changed this code to use RAUW to perform the replacement
instead of manual updates -- but kept the outer loop, which means
we try to perform RAUW once per user. However, some of the users
might be freed by the RAUW operation, resulting in use-after-free.

I think the case where this happens is constant users where the
replacement might result in the destruction of the original
constant. I wasn't able to come up with a test case though.

This is intended to fix llvm#92991.
@tstellar tstellar moved this from Needs Triage to Needs Fix in LLVM Release Status May 23, 2024
nikic added a commit that referenced this issue May 27, 2024
In #88846 I changed this code to use RAUW to perform the replacement
instead of manual updates -- but kept the outer loop, which means we try
to perform RAUW once per user. However, some of the users might be freed
by the RAUW operation, resulting in use-after-free.

The case where this happens is constant users where the replacement
might result in the destruction of the original constant.

Fixes #92991.
@github-project-automation github-project-automation bot moved this from Needs Fix to Done in LLVM Release Status May 27, 2024
@nikic
Copy link
Contributor

nikic commented May 27, 2024

/cherry-pick 9f85bc8

llvmbot pushed a commit to llvmbot/llvm-project that referenced this issue May 27, 2024
In llvm#88846 I changed this code to use RAUW to perform the replacement
instead of manual updates -- but kept the outer loop, which means we try
to perform RAUW once per user. However, some of the users might be freed
by the RAUW operation, resulting in use-after-free.

The case where this happens is constant users where the replacement
might result in the destruction of the original constant.

Fixes llvm#92991.

(cherry picked from commit 9f85bc8)
@llvmbot
Copy link
Member

llvmbot commented May 27, 2024

/pull-request #93442

freebsd-git pushed a commit to freebsd/freebsd-src that referenced this issue May 30, 2024
  [PPCMergeStringPool] Only replace constant once (#92996)

  In #88846 I changed this code to use RAUW to perform the replacement
  instead of manual updates -- but kept the outer loop, which means we try
  to perform RAUW once per user. However, some of the users might be freed
  by the RAUW operation, resulting in use-after-free.

  The case where this happens is constant users where the replacement
  might result in the destruction of the original constant.

  Fixes llvm/llvm-project#92991.

This fixes a possible crash when building crypto/openssh/sshkey.c for
PowerPC targets.

Reported by:	cperciva
PR:		276104
MFC after:	3 days
freebsd-git pushed a commit to freebsd/freebsd-src that referenced this issue Jun 2, 2024
  [PPCMergeStringPool] Only replace constant once (#92996)

  In #88846 I changed this code to use RAUW to perform the replacement
  instead of manual updates -- but kept the outer loop, which means we try
  to perform RAUW once per user. However, some of the users might be freed
  by the RAUW operation, resulting in use-after-free.

  The case where this happens is constant users where the replacement
  might result in the destruction of the original constant.

  Fixes llvm/llvm-project#92991.

This fixes a possible crash when building crypto/openssh/sshkey.c for
PowerPC targets.

Reported by:	cperciva
PR:		276104
MFC after:	3 days

(cherry picked from commit f30188c)
freebsd-git pushed a commit to freebsd/freebsd-src that referenced this issue Jun 2, 2024
  [PPCMergeStringPool] Only replace constant once (#92996)

  In #88846 I changed this code to use RAUW to perform the replacement
  instead of manual updates -- but kept the outer loop, which means we try
  to perform RAUW once per user. However, some of the users might be freed
  by the RAUW operation, resulting in use-after-free.

  The case where this happens is constant users where the replacement
  might result in the destruction of the original constant.

  Fixes llvm/llvm-project#92991.

This fixes a possible crash when building crypto/openssh/sshkey.c for
PowerPC targets.

Reported by:	cperciva
PR:		276104
MFC after:	3 days

(cherry picked from commit f30188c)
llvmbot pushed a commit to llvmbot/llvm-project that referenced this issue Jun 4, 2024
In llvm#88846 I changed this code to use RAUW to perform the replacement
instead of manual updates -- but kept the outer loop, which means we try
to perform RAUW once per user. However, some of the users might be freed
by the RAUW operation, resulting in use-after-free.

The case where this happens is constant users where the replacement
might result in the destruction of the original constant.

Fixes llvm#92991.

(cherry picked from commit 9f85bc8)
bsdjhb pushed a commit to bsdjhb/cheribsd that referenced this issue Sep 3, 2024
  [PPCMergeStringPool] Only replace constant once (#92996)

  In #88846 I changed this code to use RAUW to perform the replacement
  instead of manual updates -- but kept the outer loop, which means we try
  to perform RAUW once per user. However, some of the users might be freed
  by the RAUW operation, resulting in use-after-free.

  The case where this happens is constant users where the replacement
  might result in the destruction of the original constant.

  Fixes llvm/llvm-project#92991.

This fixes a possible crash when building crypto/openssh/sshkey.c for
PowerPC targets.

Reported by:	cperciva
PR:		276104
MFC after:	3 days
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
backend:PowerPC crash Prefer [crash-on-valid] or [crash-on-invalid] regression release:backport
Projects
Development

Successfully merging a pull request may close this issue.

4 participants