Hi Joel,

On 29.09.2016 16:25, Joel Ostraat wrote:
I chatted with Bill Deegan on IRC yesterday.  He encouraged me to file a bug 
report
(http://scons.tigris.org/issues/show_bug.cgi?id=3033) and ask how this might be 
fixed.  To reiterate my thoughts and questions from
the bug report:

Looking into it a little, I think that SCons.Node.FS.File.executor should never 
be None.  The uses of get_executor() prior to this
change seem to expect it to return either a valid Executor object, or raise an 
exception leaving the executor attribute non-existent.

I was able to prevent the problem by changing the line
https://bitbucket.org/scons/scons/commits/a8570fab2b7b2f3f1ce520528908904b9584e1f9#Lsrc/engine/SCons/Node/FS.pyT2786
 to
self.reset_executor() and removing a few other checks for "self.executor is 
None" also added in that commit.  But I don't know if
that's the right solution.

Perhaps there is some extra meaning meant to be conveyed when that executor 
attribute is be None.  If that's true, then there are
many other places where the return value of get_executor() should be checked 
against None.


welcome to the dev list! The log message (as well as the various 
comments/documentation around the changes) of the commit
a8570fab2b7b that you mention in your bug report, hint at what the change tries to accomplish. The executor is reset to "None", after building the target or finding that it's up-to-date, such that the garbage collector can free its memory. This is important in large projects (100000+ files) where the amount of memory used by the Executor objects reach a significant percentage and help to drive the whole build process into swapping much sooner.

I've been using SCons for a while, but know very little about the internals of 
SCons.  Any direction on how to fix this would be
appreciated.


If you see/can identify several other places and situations where a valid executor seems to be expected, they probably need a guard against "executor == None". Would you be able to have a look at that and try to come up with a pull request? That would be awesome.

Best regards,

Dirk

_______________________________________________
Scons-dev mailing list
Scons-dev@scons.org
https://pairlist2.pair.net/mailman/listinfo/scons-dev

Reply via email to