<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style></head><body lang=HU link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><span lang=EN-US>I don’t think PCHs were ever meant to be “transferable” between machines. Something rings a bell that even moving a PCH generated by one compiler to another (version of the) compiler is also unsupported. If the environment changes (to which it is not only compiler invocation should be considered but also “many other things”) then the PCH is by virtue outdated and must be remade…<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>A stack trace and a debug build would be good to look at to see exactly what goes sideways.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Do you mean that you get a PCH from another user and use it in your compilation to do some things on it? I think unless the other user’s environment is bit-by-bit the same it will be tricky to hunt down…</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Does it work if the other user does everything from scratch on their own machine?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It might be that the PCH misses something after having been loaded, or the resulting AST is bogus somewhere in the middle of it, and you run into a hole. Is this crash a simple SIGSEGV or something more detailed? Perhaps an assertion message, which is emitted to the output?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>; W.</p><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0cm 0cm 0cm'><p class=MsoNormal style='border:none;padding:0cm'><b>From: </b><a href="mailto:cfe-dev@lists.llvm.org">Geoff Levner via cfe-dev</a><br><b>Sent: </b>2018. október 9., kedd 17:17<br><b>To: </b><a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><br><b>Subject: </b>[cfe-dev] PCH generated in a different environment crashesapplication</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>We have an application that uses Clang and an Orc-based JIT to compile</p><p class=MsoNormal>and run C++ code on the fly. To speed up compilation, the application</p><p class=MsoNormal>generates a .h file that includes all the required header files, then</p><p class=MsoNormal>precompiles it to a PCH file. So if the code changes afterward, but</p><p class=MsoNormal>the includes don't, the PCH file can be reused.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>That works fine when I work on my own. But if another user on another</p><p class=MsoNormal>machine generates the PCH file, the application crashes, both for me</p><p class=MsoNormal>and for the other user, as soon as the compiled function is invoked. I</p><p class=MsoNormal>haven't been able to determine yet what difference in the other user's</p><p class=MsoNormal>environment might cause the problem.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Does anybody on this list have any idea why a PCH file generated by</p><p class=MsoNormal>another user with exactly the same command line might cause a crash?</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I don't know if it's relevant, but the application is compiled with</p><p class=MsoNormal>clang/llvm 7.0.0. It uses a GeneratePCHAction to generate the PCH</p><p class=MsoNormal>file, and it uses a VerifyPCHAction if the PCH file already exists.</p><p class=MsoNormal>The VerifyPCHAction succeeds, in this case, but the compiled function</p><p class=MsoNormal>still crashes.</p><p class=MsoNormal>_______________________________________________</p><p class=MsoNormal>cfe-dev mailing list</p><p class=MsoNormal>cfe-dev@lists.llvm.org</p><p class=MsoNormal>http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>