<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/105994>105994</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            Clang segfault when using C++ modules and a precompiled header
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          ShaderKeeper
      </td>
    </tr>
</table>

<pre>
    Hello,
when compiling a project that uses 4 module partitions and a precompiled header with #include <iostream.h>, I get a segfault.

I've originally encountered this problem on MacOS with llvm clang-18.1.8 . I've also been able to reproduce it in an Ubuntu docker container (on the same machine) with: Ubuntu clang version 18.1.3 (1ubuntu1) Target: aarch64-unknown-linux-gnu.

The machine this happens on is Apple Silicon M2 Pro (mac mini). Host architecture is aarch64.

Reproduction instructions using docker:
1. docker run --rm -it -v /local/path/to/repro/project:/src ubuntu bash
2. apt-get update && apt-get install -y cmake clang clang-tools ninja-build
3. cd /src
4. PATH="/usr/lib/llvm-18/bin:$PATH" CXX=clang cmake -S . -B build -G Ninja
5. cmake --build build

Should get the following output:
``` [13/15] Building CXX object CMakeFiles/pch-cppm-problem-repro.dir/Mod.cppm.o
FAILED: CMakeFiles/pch-cppm-problem-repro.dir/Mod.cppm.o CMakeFiles/pch-cppm-problem-repro.dir/mod.pcm 
/usr/lib/llvm-18/bin/clang -std=gnu++23 -Winvalid-pch -Xclang -include-pch -Xclang /src/build/CMakeFiles/pch-cppm-problem-repro.dir/cmake_pch.hxx.pch -Xclang -include -Xclang /src/build/CMakeFiles/pch-cppm-problem-repro.dir/cmake_pch.hxx -MD -MT CMakeFiles/pch-cppm-problem-repro.dir/Mod.cppm.o -MF CMakeFiles/pch-cppm-problem-repro.dir/Mod.cppm.o.d @CMakeFiles/pch-cppm-problem-repro.dir/Mod.cppm.o.modmap -o CMakeFiles/pch-cppm-problem-repro.dir/Mod.cppm.o -c /src/Mod.cppm
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.      Program arguments: /usr/lib/llvm-18/bin/clang -cc1 -triple aarch64-unknown-linux-gnu -emit-obj -mrelax-all -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name Mod.cppm -mrelocation-model pic -pic-level 2 -pic-is-pie -mframe-pointer=non-leaf -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu generic -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon -target-abi aapcs -debugger-tuning=gdb -fdebug-compilation-dir=/src/build -fcoverage-compilation-dir=/src/build -resource-dir /usr/lib/llvm-18/lib/clang/18 -Winvalid-pch -std=gnu++23 -ferror-limit 19 -fno-signed-char -fgnuc-version=4.2.1 -fmodule-file=mod:part1=CMakeFiles/pch-cppm-problem-repro.dir/mod-part1.pcm -fmodule-file=mod:part2=CMakeFiles/pch-cppm-problem-repro.dir/mod-part2.pcm -fmodule-file=mod:part3=CMakeFiles/pch-cppm-problem-repro.dir/mod-part3.pcm -fmodule-file=mod:part4=CMakeFiles/pch-cppm-problem-repro.dir/mod-part4.pcm -fskip-odr-check-in-gmf -include-pch /src/build/CMakeFiles/pch-cppm-problem-repro.dir/cmake_pch.hxx.pch -include /src/build/CMakeFiles/pch-cppm-problem-repro.dir/cmake_pch.hxx -target-feature +outline-atomics -target-feature -fmv -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o CMakeFiles/pch-cppm-problem-repro.dir/Mod.cppm.o -x pcm CMakeFiles/pch-cppm-problem-repro.dir/mod.pcm
 #0 0x0000ffff7698d398 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xd9d398)
 #1 0x0000ffff7698b5a8 llvm::sys::RunSignalHandlers() (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xd9b5a8)
 #2 0x0000ffff7698dafc (/usr/lib/llvm-18/bin/../lib/libLLVM.so.18.1+0xd9dafc)
 #3 0x0000ffff80cdf790 (linux-vdso.so.1+0x790)
 #4 0x0000ffff7f5465d0 clang::ASTReader::getLocalModuleFile(clang::serialization::ModuleFile&, unsigned int) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x27065d0)
 #5 0x0000ffff7f5c6e90 (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2786e90)
 #6 0x0000ffff7f5c5bc0 clang::ASTReader::loadDeclUpdateRecords(clang::ASTReader::PendingUpdateRecord&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2785bc0)
 #7 0x0000ffff7f575f44 clang::ASTReader::finishPendingActions() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2735f44)
 #8 0x0000ffff7f578ed8 clang::ASTReader::FinishedDeserializing() (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x2738ed8)
 #9 0x0000ffff7f55f79c clang::ASTReader::ReadAST(llvm::StringRef, clang::serialization::ModuleKind, clang::SourceLocation, unsigned int, clang::serialization::ModuleFile**) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x271f79c)
#10 0x0000ffff7f6f9250 clang::ASTUnit::LoadFromASTFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, clang::PCHContainerReader const&, clang::ASTUnit::WhatToLoad, llvm::IntrusiveRefCntPtr<clang::DiagnosticsEngine>, clang::FileSystemOptions const&, std::shared_ptr<clang::HeaderSearchOptions>, bool, clang::CaptureDiagsKind, bool, bool, llvm::IntrusiveRefCntPtr<llvm::vfs::FileSystem>) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x28b9250)
#11 0x0000ffff7f77cc7c clang::FrontendAction::BeginSourceFile(clang::CompilerInstance&, clang::FrontendInputFile const&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x293cc7c)
#12 0x0000ffff7f710580 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x28d0580)
#13 0x0000ffff7f7f8e4c clang::ExecuteCompilerInvocation(clang::CompilerInstance*) (/usr/lib/llvm-18/bin/../lib/libclang-cpp.so.18.1+0x29b8e4c)
#14 0x0000aaaaacaf21c4 cc1_main(llvm::ArrayRef<char const*>, char const*, void*) (/usr/lib/llvm-18/bin/clang+0x121c4)
#15 0x0000aaaaacaefbac (/usr/lib/llvm-18/bin/clang+0xfbac)
#16 0x0000aaaaacaeed00 clang_main(int, char**, llvm::ToolContext const&) (/usr/lib/llvm-18/bin/clang+0xed00)
#17 0x0000aaaaacafae40 main (/usr/lib/llvm-18/bin/clang+0x1ae40)
#18 0x0000ffff757d84c4 (/lib/aarch64-linux-gnu/libc.so.6+0x284c4)
#19 0x0000ffff757d8598 __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x28598)
#20 0x0000aaaaacaec970 _start (/usr/lib/llvm-18/bin/clang+0xc970)
clang: error: unable to execute command: Segmentation fault
clang: error: clang frontend command failed due to signal (use -v to see invocation)
Ubuntu clang version 18.1.3 (1ubuntu1)
Target: aarch64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/lib/llvm-18/bin
clang: note: diagnostic msg: 
********************

PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/Mod-9d95fb.cppm
clang: note: diagnostic msg: /tmp/Mod-9d95fb.sh
clang: note: diagnostic msg: 

********************
ninja: build stopped: subcommand failed. ```


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJysWl1z2yrz_zTKzQ4aGfn1IheOHZ9knuRpJs457Z0HwcrmVAINIDf9f_r_ALJjuU2b5knH41po2f3tsm9AmLVyqxAvk9FVMlpesNbttLlc75hA8x_EBs1FocX3yxusKp3QRZItk2z-bYcKuK4bWUm1BQaN0f8id-B2zEFr0cIQai3aCqFhxkkntbLAlAi0GKeigB16QfBNuh0kNJeKV61ASPKF1NYZZHW6S_LrhC7gFrbogIHFbcnayqURSvy-Tehkj6CN3ErFquo7oOK6VQ4NCnA7aT3EosIatIJ7xj-to9Cq2tfAK6a2ZDBNB-kUUuiYscpqKBAVsKJCcBoMNkaLliNIB1IBU_B30SrXgtD8KxrgWjkmFRpI6FQrcDsEy2qEmvGdVJjQWRCb5PPDzCAb9mis1AoChtzPHrTh_cBPeWJmi85PYszw3XhIWvVV6W-KVFK1z2Sr2p41nnZHiVH3HWsaVNbrLi3Mm6ZCWMtKcm8MCg9Ge5E141BLJRM6S-FGWwdemnTIXWvQz-zE94Q9dkbxSwxSWWfibwut9c4RTZPkHfkgPRjLtAoIMTUQ6YDsIaGrSnNWJXTVMLdL6MrphK6C0f1YdDHPiK6s4RANBAWzu8iapsAaR7ybtI1gDiGh44SOj6MeHasqIN-B1-wrdsaPy--0riwoqf5lpGhlJSLTPAUuIIqMI8MUHuZPN0m-TChN6Kq1xkOXhf-u9jUZTBO6KqQKUIeBllJYfPmS5MtOYpBO1pACuYIgDchf8F8vPAoZpQeiCAZOIMXv9U63lQhB4d2s1FWlv3mD69Y1rTsaPBln8QPJ6GqQJ3Q1GCWjJVx5hp5-8eUL6CKE7-KefcWVrNB6g_Md4U1Tky5ySFiJVEiv7r0WqX-Z6ihlNb-9u156F30Pjz-YVGuRNryGTrlfmZ-uorWJdSLJl1vVJvQqoVc0B_JZqj2rpCAN3wH50hF2-ac32C09XcUVoKu3Yw0ruGn4Lt09P6c_k_ThUoDcL4HcP71vGcj96l0TUwHJMHvXzFqLmjVA_sQHThHzF9MdhqNrPNxdz9fXYNuilr5uFO3WJ3BtnE_lO-caG3NJQldb6XZtkXJdd0508KVD0qEraW0bkIUqdlg-H3ncMLuDgvGvzjCOvlY1AS1Ha1GA1a2Jw6H-Wau5ZA5FSICWG9kcatnaMf4VRFs3x-jN0iSbPRi9NawGZrZtjcp54PA21-d8AMQZ6TP-q8UDCNbSEV38C6Q2WLFnEtKkkNaXPlIaRCC8QmYIs44UWGqDxKuMSrzQBQx7NLKUaMIwZ0aQPataJIrVaIHUTCpSyioOwGHNomDNmS8dpNYCK2gkB9JITircYwU0PkhLGolA6tKwGkmjpa_ySb5UWpEKWQmkrJnbETRGaSBl2RBflw3zxWOpFZBSaWJ0q3z6I54WSM11V7q0IaySzPcwpGzVN6kEcV49m-RLCsSFYkx408IWFRoPshsrkYVKmdCr_ZT9bLhsCDP1fvqzdwo9tm6cFRIYa7gFIrBot1s0xLVKqq3PZKIAUoZxElupaDYfHb4qnaYSICXXezRsi2-gNRi91b9-3cPic_AwX06m5-n0J_m2RGO0IZX0wTiYxTUIvacgfMcMkHKrWk66RijJl8OUpgO_lqGNDC6T5MtaiySf-55ykOTLPyobJMwKxeN1rvRdXOlvuObv4pr_huvwXVyHHVf7VTZEC0P4DvlXIhXZ1mW_BH5s6Ts29x9W6n6MId26SiokzOla-uA5IyFlvQdSMiGMlVsgy83mr8ViczP_53qz_Dx_XNHNYnW7ma_vk3w5eH9VegZv5D_uamLO9zuhDLLnLMuysizLyXg2FflsGjYrvjLkc_vdxh8PRioX6sZTLD7TFyLDvm26XVRohBcglfP7iYROf1M90vTllSzu7v65T61O_e4koVfZs5h5PAmdvQAenAEuRuyngB9btZZbxaobpkSFxgYwH4LJi-xhoudGZCX_EOVZyXuC8hNB04yLcjLLvKBYYffC6sAhTJ_Mst7c4SnIcjQcj0QWtyTRYPP102PYJcfHLbo7v0u6D0nBO1dCpyfkFo1klfy_kOXj0ClpcINWxcz7Xn-IGybeND270EnmsfeUG_WV42OMhvkQcVPPrSdufCZuVPBf2bLSTCyRV3-H3eIjcm2E7ZvzbMYDhqbhdEKw6cfZcOox95Sa9JWajMrh8BdKlVJJu-uAzuNW_J0x9hrG3EPoYZyeYZyimP4C4ypgRLHEg7v6xuaDQXoMPZCzPshROZnxX4D0v-frp15KXTsj1fYRSx9Gb4m6_0glzmjXocO663rdH-PxbYxjOM_D5-OMNvA2ORrNp_VeISrH5YyOzkPqbyVdfLjTTKyMrufrpy4zhVbQv9ps-PPzYBAfCmYl39hgzCRf-AbQ630k9gMbZ5j0W534Oh4CHilYFTYL2py8z68hdPFdljsB-bC4WRyO5uISv0bZU-fzjrkn7ZXyVC9ecKucaa3c4yOWC-UeXEDxwmQp2VZp6yS312orFXboT0i8edbfrcP6UxNPy04BHdW0O2ZQbJpzCTdBiTX6HV3HoJNRaF2dyVqwxjc_HpU9-OOB7PD_b5R7eb0v7bkGQfKH-eC08C7W88Feb1FOJpxPeoG7Mlo5VCJmuzh2hVupYqj9WCQX8fzZ3CrrmOL4ox8cWN6qpnWewcn6fJiqs9xr0lOV9lUdZKNpL9x-QB5Gr5-Rtw47_XuqntnmQ_FPhYfXw5_38ZdTHPaWqkP6osb-mAd_vUAfmeZmhYfVw33owpj_x1lJB3wInA82NfN8T0rA3Bj23VeAmHgOfjE_xHhvjC5gr6V4M_xuT32VPQ88gh7EUR8ilgV7Szf7wtJP6HEcn3FEkXXOdlD7UJBCgp53Gr3Y4knryidWfHZ_GB8vqLzQHqrJ2VIwHGbg8fyZ_fy0Ht9ejzKaiOmQDzuWkdnhfOx4LtY5kXeecefxw7NFmZ0zHc2msNn4aRvrmHGbE-RvFzM62V35jUx2tlJ8NskgCvgjq_h5R8aHeINwNuN_tOpw1YUxToHrumbKVyNY47ZG5UK0QriCe41NPHssu8xz4AElC3d-og0SbNgFevStRSD7MIYI8iQldEDfflXW3X_9_r7scFFmkAkIx42evNFWPnc3ivGuCMVSmt8et_btoLTzeRnEsQ2A2oY3hwX9Hz4nN0DdCff86Wm-uIGnm2tYfbq7-_T59r9_wer27noNT5_C8NXff8Hj9cOnx6fjufLDz06op9YH76un1EcCgxC6LxTAXi6a3qI_Xbm6iWclZCZmo7I4ObF_J4PD9d_b7f9BqxDuCj3beHhqnW4aDKFi26Lv9Ckcr-FOMVyIy1zM8hm7wMvBhA7H2YTm2cXuclQOeUlHYz6YDkeTTMyyWYajWT6c5jM6HPELeUkzOsymdDSY5PkoS4t8nI_GNBc4weFkPEiGGdZMVqn31FSb7UW4wbgcZKPZbHhRsQIrG679Ke3yA01GywtzGVy7aLc2GWaVtM6-sHDSVXi5CHF4uIeH8McA8a53EQ98u6v_1y_8L1pTXb7_CqbTYX9J_z8AAP__--VGpg">