[Scons-users] scons-local-2.5.1 build and clean shows random failure

Hua Yanghao huayanghao at gmail.com
Sat Jul 22 02:47:49 EDT 2017


By the way the failure is random, below 4 consecutive runs failed
twice passed twice:
hua at grass:~/git/usw $ tools/scons -j8 -c config=linux64_full.py
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
scons: done cleaning targets.
hua at grass:~/git/usw $ tools/scons -j8 -c config=linux64_full.py
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
scons: done cleaning targets.

scons: *** Found dependency cycle(s):
  Internal Error: no cycle found for node output/linux64_full
(<SCons.Node.FS.Dir object at 0x55d10f3ee5a0>) in state pending

File "/home/hua/git/usw/tools/scons-local-2.5.1/SCons/Taskmaster.py",
line 1043, in cleanup
hua at grass:~/git/usw $ tools/scons -j8 -c config=linux64_full.py
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
scons: done cleaning targets.

scons: *** Found dependency cycle(s):
  Internal Error: no cycle found for node output/linux64_full
(<SCons.Node.FS.Dir object at 0x55f9ed59ef20>) in state pending

File "/home/hua/git/usw/tools/scons-local-2.5.1/SCons/Taskmaster.py",
line 1043, in cleanup
hua at grass:~/git/usw $ tools/scons -j8 -c config=linux64_full.py
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Cleaning targets ...
scons: done cleaning targets.
hua at grass:~/git/usw $

BR, Yanghao

On Sat, Jul 22, 2017 at 8:42 AM, Hua Yanghao <huayanghao at gmail.com> wrote:
> Hi Bill,
> No error seen if no "-j8".
> I do have quite some custom builders, any special consideration needed?
>
> without -j8 using --tree=prune just builds normally:
> hua at grass:~/git/usw $ tools/scons --tree=prune -c
> --taskmastertrace=test.log config=linux64_full.py
> scons: Reading SConscript files ...
> scons: done reading SConscript files.
> scons: Cleaning targets ...
> scons: done cleaning targets.
> hua at grass:~/git/usw $ tools/scons -j8 --tree=prune -c
> --taskmastertrace=test.log config=linux64_full.py
> scons: Reading SConscript files ...
> scons: done reading SConscript files.
> scons: Cleaning targets ...
> scons: done cleaning targets.
>
> scons: *** Found dependency cycle(s):
>   Internal Error: no cycle found for node output/linux64_full
> (<SCons.Node.FS.Dir object at 0x564ad74aafe0>) in state pending
>
> File "/home/hua/git/usw/tools/scons-local-2.5.1/SCons/Taskmaster.py",
> line 1043, in cleanup
> hua at grass:~/git/usw $
>
> Best Regards,
> Yanghao
>
> On Sat, Jul 22, 2017 at 12:40 AM, Bill Deegan <bill at baddogconsulting.com> wrote:
>> If you build with no "-j8" do you see the error?
>> If not then what's the output of --tree=prune without -j8?
>>
>> Also you didn't respond to:
>>
>> Do you have any custom Builders?
>>
>> -Bill
>>
>> On Fri, Jul 21, 2017 at 6:28 PM, Hua Yanghao <huayanghao at gmail.com> wrote:
>>>
>>> hua at grass:~ $ python --version
>>> Python 2.7.13
>>> hua at grass:~ $ lsb_release -a
>>> LSB Version:
>>> core-9.20160110ubuntu5-amd64:core-9.20160110ubuntu5-noarch:security-9.20160110ubuntu5-amd64:security-9.20160110ubuntu5-noarch
>>> Distributor ID: Ubuntu
>>> Description: Ubuntu 17.04
>>> Release: 17.04
>>> Codename: zesty
>>> hua at grass:~ $
>>>
>>> I attached the taskmastertrace log here.
>>>
>>> --tree=prune shows the same result:
>>> hua at grass:~/git/usw $ tools/scons -j8 --tree=prune -c
>>> --taskmastertrace=test.log config=linux64_full.py
>>> scons: Reading SConscript files ...
>>> scons: done reading SConscript files.
>>> scons: Cleaning targets ...
>>> scons: done cleaning targets.
>>>
>>> scons: *** Found dependency cycle(s):
>>>   Internal Error: no cycle found for node output/linux64_full
>>> (<SCons.Node.FS.Dir object at 0x55d1fef0ffe0>) in state pending
>>>
>>> File "/home/hua/git/usw/tools/scons-local-2.5.1/SCons/Taskmaster.py",
>>> line 1043, in cleanup
>>>
>>> On Sat, Jul 22, 2017 at 12:03 AM, Bill Deegan <bill at baddogconsulting.com>
>>> wrote:
>>> > Which version of Python?
>>> > What operating system? (mac, linux, windows?)
>>> >
>>> > Do you have any custom Builders?
>>> >
>>> > Try using
>>> > --taskmastertrace=file
>>> >
>>> > Prints trace information to the specified file about how the internal
>>> > Taskmaster object evaluates and controls the order in which Nodes are
>>> > built.
>>> > A file name of - may be used to specify the standard output.
>>> >
>>> > And pastebin the output.
>>> >
>>> > Also anything unusual in --tree=prune ?
>>> >
>>> > -Bill
>>> >
>>> >
>>> > On Fri, Jul 21, 2017 at 5:17 PM, Hua Yanghao <huayanghao at gmail.com>
>>> > wrote:
>>> >>
>>> >> Dear Scons User,
>>> >> I am recently experiencing some random failures in both scons build
>>> >> and scons clean (-c).
>>> >>
>>> >> Unfortunately the project has more than 2000 .c/.h files and I cannot
>>> >> create a minimal project to reproduce this issue.
>>> >>
>>> >> Error message: (scons -c)
>>> >> Removed output/linux64_full/libusw.a
>>> >> Removed output/linux64_full/cmdlist.txt
>>> >> scons: done cleaning targets.
>>> >>
>>> >> scons: *** Found dependency cycle(s):
>>> >>   Internal Error: no cycle found for node output/linux64_full
>>> >> (<SCons.Node.FS.Dir object at 0x5630bcf78c60>) in state pending
>>> >>
>>> >> File "/home/hua/git/usw/tools/scons-local-2.5.1/SCons/Taskmaster.py",
>>> >> line 1043, in cleanup
>>> >>
>>> >> End of error message.
>>> >>
>>> >> This issue can be reproduced one out of five runs, could happen in
>>> >> both scons build and scons clean.
>>> >> This issue happens *only* with parallel builds (-j8), and cannot
>>> >> reproduce with single thread build.
>>> >> The project uses scons VariantDir() and many custom builders.
>>> >>
>>> >> In file SCons/Taskmaster.py, if I simply add a "return" on line 1033,
>>> >> the problem cannot be reproduced anymore, and builds are fine all the
>>> >> time (checked many dozens of times):
>>> >> 1033         return # <--------- This line "fixed" the issue ;-)
>>> >> 1034         desc = 'Found dependency cycle(s):\n'
>>> >> 1035         for node, cycle in nclist:
>>> >> 1036             if cycle:
>>> >> 1037                 desc = desc + "  " + " -> ".join(map(str, cycle))
>>> >> +
>>> >> "\n"
>>> >> 1038             else:
>>> >> 1039                 desc = desc + \
>>> >> 1040                     "  Internal Error: no cycle found for node %s
>>> >> (%s) in state %s\n" %  \
>>> >> 1041                     (node, repr(node),
>>> >> StateString[node.get_state()])
>>> >> 1042
>>> >> 1043         raise SCons.Errors.UserError(desc)
>>> >>
>>> >> Does anyone had similar experience? Is scons over-checking something
>>> >> and made a false alarm?
>>> >> I am about to promote scons to a much wider audience but this issue
>>> >> really makes me a little bit nervous.
>>> >>
>>> >> Thanks a lot for your help,
>>> >> Yanghao
>>> >> _______________________________________________
>>> >> Scons-users mailing list
>>> >> Scons-users at scons.org
>>> >> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>> >
>>> >
>>> >
>>> > _______________________________________________
>>> > Scons-users mailing list
>>> > Scons-users at scons.org
>>> > https://pairlist4.pair.net/mailman/listinfo/scons-users
>>> >
>>>
>>> _______________________________________________
>>> Scons-users mailing list
>>> Scons-users at scons.org
>>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>>
>>
>>
>> _______________________________________________
>> Scons-users mailing list
>> Scons-users at scons.org
>> https://pairlist4.pair.net/mailman/listinfo/scons-users
>>


More information about the Scons-users mailing list