Recently my builds on linux with --opt=jit have started failing with the following error: [translation:info] Error: [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/goal/translate.py", line 316, in main [translation:info] drv.proceed(goals) [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/driver.py", line 539, in proceed [translation:info] return self._execute(goals, task_skip = self._maybe_skip()) [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/tool/taskengine.py", line 114, in _execute [translation:info] res = self._do(goal, taskcallable, *args, **kwds) [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/driver.py", line 276, in _do [translation:info] res = func() [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/driver.py", line 505, in task_compile_c [translation:info] cbuilder.compile(**kwds) [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/c/genc.py", line 375, in compile [translation:info] extra_opts) [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/platform/posix.py", line 198, in execute_makefile [translation:info] self._handle_error(returncode, stdout, stderr, path.join('make')) [translation:info] File "/home/travis/build/pixie-lang/externals/pypy/rpython/translator/platform/__init__.py", line 151, in _handle_error [translation:info] raise CompilationError(stdout, stderr) [translation:ERROR] CompilationError: CompilationError(err=""" [translation:ERROR] pixie_vm_threads.c: In function ‘pypy_g_do_yield_thread’: [translation:ERROR] pixie_vm_threads.c:475:21: error: ‘pypy_g_do_yield_thread_reload’ undeclared (first use in this function) [translation:ERROR] pixie_vm_threads.c:475:21: note: each undeclared identifier is reported only once for each function it appears in [translation:ERROR] make[1]: *** [pixie_vm_threads.gcmap] Error 1 [translation:ERROR] """) [translation] start debugger...
/home/travis/build/pixie-lang/externals/pypy/rpython/translator/platform/__init__.py(151)_handle_error() -> raise CompilationError(stdout, stderr) (Pdb+) I find this odd as it works just fine without the JIT, and compiles fine on OS X. The code in question is basically a copy-and-paste from PyPy's code: https://github.com/pixie-lang/pixie/blob/master/pixie/vm/threads.py#L90 Any ideas why this would suddenly have started failing recently? I normally build against a pretty recent version of PyPy master, so did something change in the pypy source? Thanks again for any help, Timothy
Hi Timothy, On 20 January 2015 at 15:59, Timothy Baldridge <tbaldridge@gmail.com> wrote:
I find this odd as it works just fine without the JIT, and compiles fine on OS X. The code in question is basically a copy-and-paste from PyPy's code: https://github.com/pixie-lang/pixie/blob/master/pixie/vm/threads.py#L90
Maybe related: there is a copy mistake in after_external_call(). It should not call the get/set_saved_errno() functions. A bientôt, Armin.
I fixed both of those now, but to no avail. The build still fails. But looking at the error it's interesting to note that "do_yield_thread" does exist, but "do_yield_thread_reload" does not. From what I can figure out, this "_reload" function is generated by asmgcroot. My OSX build is defaulting to shadowstack. I switched all builds to use shadowstack and the build error goes away. So I guess that was the issue. Timothy On Tue, Jan 20, 2015 at 8:05 AM, Armin Rigo <arigo@tunes.org> wrote:
Re-hi,
On 20 January 2015 at 16:04, Armin Rigo <arigo@tunes.org> wrote:
Maybe related: there is a copy mistake in after_external_call(). It should not call the get/set_saved_errno() functions.
Also, did you mean "_cleanup_()" instead of "__cleanup__()"?
Armin
-- “One of the main causes of the fall of the Roman Empire was that–lacking zero–they had no way to indicate successful termination of their C programs.” (Robert Firth)
Hi Timothy, On 21 January 2015 at 02:07, Timothy Baldridge <tbaldridge@gmail.com> wrote:
I switched all builds to use shadowstack and the build error goes away. So I guess that was the issue.
Can you tell us how to reproduce anyway? It's strange that you get this problem, because a "void pypy_g_do_yield_thread_reload(void)" is present in the C code generated for PyPy with asmgcc. A bientôt, Armin.
participants (2)
-
Armin Rigo
-
Timothy Baldridge