[PATCH] D22636: Module: retry building modules that were just compiled by the same instance and are are out of date

Manman Ren via cfe-commits cfe-commits at lists.llvm.org
Thu Jul 21 11:58:20 PDT 2016


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





More information about the cfe-commits mailing list