[cfe-dev] fatal error while reparsing translation unit: file '/some/path/to/header' has been modified since the precompiled header '/tmp/preamble-8ae0ef.pch' was built

Ben Langmuir blangmuir at apple.com
Fri Jun 27 10:35:28 PDT 2014


FYI, I finally landed a unit test based on your reproducer in r211910.

Ben


> On Jun 23, 2014, at 9:48 AM, Dan Schmidt <dcschmid at gmail.com> wrote:
> 
> Awesome, thanks!
> 
> On Mon Jun 23 2014 at 12:46:29 PM, Ben Langmuir <blangmuir at apple.com> wrote:
> Hey Dan,
> 
> Should be fixed in r211504.  I’ll try to get your test case added to the regression tests when I have some time.
> 
> Thanks for the detailed report,
> 
> Ben
> 
>> On Jun 20, 2014, at 5:55 PM, Ben Langmuir <blangmuir at apple.com> wrote:
>> 
>> 
>>> On Jun 20, 2014, at 4:39 PM, Dan Schmidt <dcschmid at gmail.com> wrote:
>>> 
>>> FYI, I've determined that the issue was introduced in r206309. I haven't looked into it any further than that at this point, but thought I'd give an update in case anyone else was able to look into it.
>> 
>> Thanks for bisecting!  This is probably something to do with the changes I made to how FileManagers are shared among the ASTUnit bits.  I’ll take a look.
>> 
>> Ben
>>> 
>>> -ds
>>> 
>>> On Thu Jun 19 2014 at 7:18:12 AM, Dan Schmidt <dcschmid at gmail.com> wrote:
>>> ping
>>> 
>>> Has anyone else seen similar errors? Is this a bug in libclang?
>>> 
>>> On Tue Jun 17 2014 at 10:48:04 AM, Manuel Klimek <klimek at google.com> wrote:
>>> +argyrios
>>> 
>>> On Mon, Jun 16, 2014 at 2:07 PM, Dan Schmidt <dcschmid at gmail.com> wrote:
>>> Hello clang devs,
>>> 
>>> I use YouCompleteMe as a semantic completion engine for vim, which in turn uses libclang to provide completions. By default, YCM uses the 3.4 version of libclang, and all works well. However, I recently updated it to use the head version and now I'm seeing errors like that listed in the subject. I've been able to create a minimal reproduction - see the attached files.
>>> 
>>> To execute run commands similar to the following:
>>> tar xvf clang_parse.tar.gz
>>> cd clang_parse
>>> mkdir obj
>>> cd obj
>>> cmake -D CMAKE_BUILD_TYPE=Release -G "Unix Makefiles" -D PATH_TO_LLVM_ROOT=<path to llvm head install dir - should have include and lib under here> ../src/
>>> make
>>> ./parse_tu
>>> The basic test case is this:
>>> Write the small cpp and h files to disk.
>>> Parse the translation unit - observe that the syntax error is reported
>>> Immediately reparse the TU.
>>> Update the header in memory and reparse - observe that the syntax error is gone.
>>> Save the header to disk and reparse. Observe the "file '/tmp/header_file.h' has been modified since the precompiled header '/some/path/preamble-eb3c0c.pch' was built" error.
>>> Am I using these methods incorrectly, or is there a bug in clang? If I'm using them incorrectly, what is the correct way to reparse a translation unit that has changed?
>>> 
>>> Thanks,
>>> Dan
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>>> 
>>> 
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at cs.uiuc.edu
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140627/03395f64/attachment.html>


More information about the cfe-dev mailing list