[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #910: Failure with many arguments on amd64
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #910: Failure with many arguments on amd64 |
Date: |
Sun, 02 Sep 2012 11:40:46 -0000 |
#910: Failure with many arguments on amd64
-----------------------------+----------------------------------------------
Reporter: sjamaan | Owner: felix
Type: defect | Status: assigned
Priority: critical | Milestone: 4.9.0
Component: core libraries | Version: 4.8.x
Resolution: | Keywords:
-----------------------------+----------------------------------------------
Comment(by felix):
No, `C_do_apply` is not involved. But `C_restore_rest` would overflow the
temporary stack. But the crash happens earlier - already when doing the
call (or directly when entering the procedure). I get (like you) all sorts
of weird segfaults and illegal instruction errors. This looks the call is
already exceeding the allowed parameter limit (AFAIK, the C standard just
allows a handful, passing a very large number of arguments to a C function
may result in undefined behaviour), particularly because it calls a vararg
function. This seems simply to be a limitation of the x86-64 ABI.
I see no fix besides introducing a static limit, in other words: give a
warning or error when compiling a call with more than (say) 1024
arguments.
I also think this is not relevant to 4.8.0, as there isn't much that can
be done about it.
--
Ticket URL: <http://bugs.call-cc.org/ticket/910#comment:7>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.