[pypy-issue] Issue #2945: Build with debug info and continuation support, got "'no_collect' function can trigger collection" error (pypy/pypy)

Yuxuan “fishy” Wang issues-reply at bitbucket.org
Wed Jan 30 19:21:42 EST 2019

New issue 2945: Build with debug info and continuation support, got "'no_collect' function can trigger collection" error

Yuxuan “fishy” Wang:

I was trying to build pypy3.5 (from tag `release-pypy3.5-v6.0.0`) with debug info (`-O0`) and continuation support (because that's required by greenlet), this is the command line I used for building:

pypy ../../rpython/bin/rpython -O0 --continuation --gc incminimark targetpypystandalone --withmod-_continuation

But I got this error after 99%:

[CollectAnalyzer] v3737 = malloc((GcStruct tuple4), ({'flavor': 'gc'})): True
[CollectAnalyzer] analyze_direct_call((rpython.rlib.rsiphash:206)_half_round): True
[CollectAnalyzer] analyze_direct_call((rpython.rlib.rsiphash:215)_double_round): True
[152ad] translation-task}
[Timer] Timings:
[Timer] annotate                       --- 272.0 s
[Timer] rtype_lltype                   --- 402.3 s
[Timer] backendopt_lltype              ---  15.9 s
[Timer] stackcheckinsertion_lltype     --- 128.8 s
[Timer] database_c                     ---  31.4 s
[Timer] ==========================================
[Timer] Total:                         --- 850.4 s
[translation:info] Error:
   File "/home/vagrant/pypy/rpython/translator/goal/translate.py", line 318, in main
   File "/home/vagrant/pypy/rpython/translator/driver.py", line 554, in proceed
    result = self._execute(goals, task_skip = self._maybe_skip())
   File "/home/vagrant/pypy/rpython/translator/tool/taskengine.py", line 114, in _execute
    res = self._do(goal, taskcallable, *args, **kwds)
   File "/home/vagrant/pypy/rpython/translator/driver.py", line 278, in _do
    res = func()
   File "/home/vagrant/pypy/rpython/translator/driver.py", line 435, in task_database_c
    database = cbuilder.build_database()
   File "/home/vagrant/pypy/rpython/translator/c/genc.py", line 127, in build_database
   File "/home/vagrant/pypy/rpython/translator/c/database.py", line 306, in complete
    add_dependencies(node.enum_dependencies(), node)
   File "/home/vagrant/pypy/rpython/translator/c/database.py", line 294, in add_dependencies
    self.get(value, parent and parent._funccodegen_owner)
   File "/home/vagrant/pypy/rpython/translator/c/database.py", line 224, in get
    node = self.getcontainernode(container)
   File "/home/vagrant/pypy/rpython/translator/c/database.py", line 158, in getcontainernode
    node = nodefactory(self, T, container, **buildkwds)
   File "/home/vagrant/pypy/rpython/translator/c/node.py", line 898, in new_funcnode
    return FuncNode(db, T, obj, name)
   File "/home/vagrant/pypy/rpython/translator/c/node.py", line 803, in __init__
    self.funcgen = make_funcgen(obj.graph, db, exception_policy, ptrname)
   File "/home/vagrant/pypy/rpython/translator/c/funcgen.py", line 28, in make_funcgen
   File "/home/vagrant/pypy/rpython/memory/gctransform/framework.py", line 754, in transform_graph
    " %s" % func)
[translation:ERROR] Exception: 'no_collect' function can trigger collection: <function _siphash24 at 0x000055e479e4a548>

Can someone advise?

More information about the pypy-issue mailing list