On 28.01.2014 23:57, Gary Oberbrunner wrote:
More results, no fix yet.

The generated file all-defuns.c I mentioned before is definitely part of the problem. I back-ported the tracing code I wrote to just before Dirk's memory optimization. In that version, near the beginning of the build phase something calls node.is_up_to_date() on all-defuns.c and it says it has changed, due to depending on a dir "mkl" which is in no_state (i.e. hasn't been evaluated yet). In Dirk's version, this result gets cached, which seems sensible. But in the old version, when the taskmaster considers that all-defuns.c node, and calls is_up_to_date(), now it correctly returns True, because by now the mkl dir has been evaluated and it's in up-to-date state. So it's definitely the caching that's causing the trouble, but I don't understand why is_up_to_date should return different values at different times -- especially go from false to true before anything's been built. Perhaps there's another bug in the code which Dirk's patch exposes?

I would think is_up_to_date() should never assume that being unprocessed (i.e. no_state) means not up-to-date; I'd think it should have scanned the no_state node before its dependents. Anyone have any clues?


When I implemented my changes, I saw that in the old version the changed() (or connected methods) could be actually called after a file was built. And since there was nothing cached, this could lead to creating additional build infos in the same step. So there was a danger of having a build info hash signature in the .sconsign, that would not actually describe how the target was built (more like, how would it be built next time).

Maybe your build DAG relied on this fact so far? By the way, are you building with "-j" or is it failing single-core too? Do you think it's possible to extract an isolated test case from this, now that we know more about what seems to happen?

Regarding the is_up_to_date() method, we're pretty much on the same page.

Dirk


_______________________________________________
Scons-dev mailing list
Scons-dev@scons.org
http://two.pairlist.net/mailman/listinfo/scons-dev

Reply via email to