Boost logo

Boost-Build :

Subject: Re: [Boost-build] question(s) about bjam code
From: Stefan Seefeld (stefan_at_[hidden])
Date: 2017-10-13 14:45:06

On 05.10.2017 22:31, Steven Watanabe via Boost-build wrote:
> On 10/05/2017 08:12 PM, Stefan Seefeld via Boost-build wrote:
>> <snip>
>> I'm looking at
>>, and
>> wonder why, despite the inline comment above the referenced line, this is not
>> the first statement to be executed in the make1a function. I understand that the
>> make1a function may be called multiple times from different locations, but
>> should be ignored (i.e., should be a noop) in all but one case.
>> However, each time the function is called, its parent's async counter is
>> incremented (as long as this target 's progress is not yet RUNNING).
> Example:
> A depends on C
> B depends on C
> We enter make1a for C twice, once with each parent,
> A and B. A and B both need to wait for C to complete,
> hence we increment the async counter both times.
> We only skip this if C has already completed, and
> no waiting is required.

Fair enough. However, if the parent counter is incremented, shouldn't
there also (directly or indirectly) be a MAKE1B state that is pushed
onto the stack for that parent ?
This happens if the child target hasn't started processing, but it
doesn't if it's already on the stack.
In my modified code I'm observing a bug caused by the state machine
running out of states without completing all tasks, and I wonder whether
that isn't caused by this asymmetry.



      ...ich hab' noch einen Koffer in Berlin...


Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at