chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Chicken-janitors] #1380: make check fails on Alpine Linux ppc64le


From: Chicken Trac
Subject: Re: [Chicken-janitors] #1380: make check fails on Alpine Linux ppc64le
Date: Sat, 29 Jul 2017 18:41:58 -0000

#1380: make check fails on Alpine Linux ppc64le
------------------------------------+----------------------
            Reporter:  rgdoliveira  |      Owner:
                Type:  defect       |     Status:  reopened
            Priority:  major        |  Milestone:  someday
           Component:  compiler     |    Version:  4.12.0
          Resolution:               |   Keywords:
Estimated difficulty:               |
------------------------------------+----------------------

Comment (by felix):

 The problem seems to be that the call to `C_alloc` in runtime.c:1512
 returns a pointer into an already used portion of the stack frame. The
 following `C_memcpy` will overwrite the register `%r2` stored in `$r1+24`
 after the `C_setjmp` in runtime.c:1502.

 To reproduce the problem: set a breakpoint in runtime.c:1505, and continue
 until this line is executed the second time. The first non-local return
 from the setjmp is fine, then the memcpy will overwrite part of the stack
 frame and the next non-local return will pick up a clobbered value for
 `$r2` and other registers later, including `$r1`, I think.

 What causes this is not clear to me, perhaps an invalid interaction
 between musl and the C compiler, or even a compiler bug, as musl seems to
 use `__builtin_alloca` when compiled with gcc.

--
Ticket URL: <https://bugs.call-cc.org/ticket/1380#comment:9>
CHICKEN Scheme <https://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]