manmanren added a comment. In https://reviews.llvm.org/D22636#491679, @benlangmuir wrote:
> > B.pcm becomes out of date when we try to load module "A", because another > > instance overwrites "B.pcm" > > > How can this happen? We intentionally keep the file descriptors of modules > open. If you just built A, then you will have B.pcm still open. When you > read A, you will use the same B that you used when you built A even if the > file on disk has been replaced (and we use rename to replace the file, so the > existing one is never modified). Can you point me to the source codes where we use rename to replace the file? I am curious on how this all works out. What I described is a scenario I thought possible that can cause "out-of-date" error: module "B" is out of date and needs to be rebuilt note: imported by module "A" The only invocation of ReadAST that reads a module file and can't handle out-of-date modules, is the path where we just built module "A" and tries to load module "A" (here ModuleLoadCapabilities will be ARR_Missing). I am still working with the project owner to collect more debugging messages. If this is not a possible scenario, do you have any suggestion on what can cause this error? Cheers, Manman https://reviews.llvm.org/D22636 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits