[Scons-users] Scons 2.5.1 crash when building OpenWSN - "AttributeError : 'NoneType' object has no attribute 'get_contents'"
Bill Deegan
bill at baddogconsulting.com
Wed Jul 12 10:58:24 EDT 2017
Can you post the builder which is doing this:
Objectifying...
-Bill
On Wed, Jul 12, 2017 at 10:31 AM, MikeH <mh at ashwireless.com> wrote:
> Using SCons 2.5.1 (or 2.5.0) on Windows 7 to build a variant of OpenWSN,
> I'm seeing a crash with "AttributeError : 'NoneType' object has no
> attribute 'get_contents'". Is this a bug in SCons itself, or a mistake in
> an SConscript file?
>
> C:\SVN_repos\sw\OpenWSN\openwsn-fw-develop\trunk>c:\Python27\scons.bat
> board=python toolchain=gcc --debug=stacktrace oos_openwsn
>
> ...
> Compiling build\python_gcc\openstack\03b-IPv6\icmpv6_obj.o
> Objectifying openstack\03b-IPv6\icmpv6echo.c -> icmpv6echo_obj.c
> Compiling build\python_gcc\openstack\03b-IPv6\icmpv6echo_obj.o
> Objectifying openstack\03b-IPv6\icmpv6rpl.c -> icmpv6rpl_obj.c
> Compiling build\python_gcc\openstack\03b-IPv6\icmpv6rpl_obj.o
> Objectifying openstack\04-TRAN\opencoap.c -> opencoap_obj.c
> Compiling build\python_gcc\openstack\04-TRAN\opencoap_obj.o
> Objectifying openstack\04-TRAN\opentcp.c -> opentcp_obj.c
> Compiling build\python_gcc\openstack\04-TRAN\opentcp_obj.o
> Objectifying openstack\04-TRAN\openudp.c -> openudp_obj.c
> Objectifying openapps\uinject\uinject.h -> uinject_obj.h
> scons: *** [build\python_gcc\openstack\04-TRAN\openudp_obj.o]
> AttributeError : 'NoneType' object has no attribute 'get_contents'
> scons: internal stack trace:
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Job.py", line
> 199, in start
> task.prepare()
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Script\Main.py",
> line 164, in prepare
> return SCons.Taskmaster.OutOfDateTask.prepare(self)
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Taskmaster.py",
> line 172, in prepare
> self.exception_raise()
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Taskmaster.py",
> line 806, in _find_next_ready_node
> children = executor.get_all_children()
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Executor.py",
> line 322, in get_all_children
> result.extend(target.children())
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Node\__init__.py",
> line 1375, in children
> self.scan()
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Node\__init__.py",
> line 1051, in scan
> executor.scan_sources(self.builder.source_scanner)
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Executor.py",
> line 479, in scan_sources
> self.scan(scanner, self.get_all_sources())
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Executor.py",
> line 496, in scan
> deps.extend(node.get_implicit_deps(env, scanner, path, kw))
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Node\__init__.py",
> line 946, in get_implicit_deps
> included_deps = [x for x in node.get_found_includes(env, scanner,
> path) if x not in seen]
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Node\FS.py", line
> 2893, in get_found_includes
> result = [n.disambiguate() for n in scanner(self, env, path)]
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Scanner\__init__.py",
> line 203, in __call__
> if self.scan_check and not self.scan_check(node, env):
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Scanner\__init__.py",
> line 309, in current_check
> return not node.has_builder() or node.is_up_to_date()
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Node\FS.py", line
> 3286, in is_up_to_date
> if not self.changed(r):
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Node\FS.py", line
> 3241, in changed
> has_changed = SCons.Node.Node.changed(self, node)
> File "c:\Python27\Lib\site-packages\scons-2.5.1\SCons\Node\__init__.py",
> line 1464, in changed
> contents = self.get_executor().get_contents()
> scons: building terminated because of errors.
>
>
> Adding a temporary line of code "print self.get_executor()" just before
> the crashing line gives:
>
> Objectifying openstack\04-TRAN\opencoap.c -> opencoap_obj.c
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM
> $SOURCES
> Compiling build\python_gcc\openstack\04-TRAN\opencoap_obj.o
> self.get_executor() = $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM
> $SOURCES
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = objectify(target, source, env)
> Objectifying openstack\04-TRAN\opentcp.c -> opentcp_obj.c
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM
> $SOURCES
> Compiling build\python_gcc\openstack\04-TRAN\opentcp_obj.o
> self.get_executor() = $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM
> $SOURCES
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = objectify(target, source, env)
> Objectifying openstack\04-TRAN\openudp.c -> openudp_obj.c
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = objectify(target, source, env)
> Objectifying openapps\uinject\uinject.h -> uinject_obj.h
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = objectify(target, source, env)
> self.get_executor() = None
> self.get_executor() = $CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM
> $SOURCES
> scons: *** [build\python_gcc\openstack\04-TRAN\openudp_obj.o]
> AttributeError : 'NoneType' object has no attribute 'get_contents'
> scons: internal stack trace:.....
>
> (objectify() is a function defined in the SConscript.env file of OpenWSN).
>
> It took me some time to discover the "--debug=stacktrace" option and track
> down the offending line. If self.get_executor() can return None, should
> that situation be caught and handled more helpfully?
>
> thanks,
>
> Mike H.
>
> _______________________________________________
> Scons-users mailing list
> Scons-users at scons.org
> https://pairlist4.pair.net/mailman/listinfo/scons-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pairlist4.pair.net/pipermail/scons-users/attachments/20170712/411e87f7/attachment-0001.html>
More information about the Scons-users
mailing list