Re: [Chicken-users] Unbounded stack growth

2012-07-12 Thread cjtenny
At the risk of charging in like an entire stampede of cluelessness, Quoting Matthew Flatt mfl...@cs.utah.edu: At Thu, 12 Jul 2012 11:25:44 +0900, Alex Shinn wrote: I disagree - I think a stack grown too large is likely indicative of a programming error, or at the very least an inefficient

Re: [Chicken-users] Unbounded stack growth

2012-07-12 Thread Alex Queiroz
Hallo, On Thu, Jul 12, 2012 at 4:25 AM, Alex Shinn alexsh...@gmail.com wrote: I disagree - I think a stack grown too large is likely indicative of a programming error, or at the very least an inefficient algorithm. In the general case I want my programs to be able to allocate as much heap

Re: [Chicken-users] Unbounded stack growth

2012-07-12 Thread Alex Shinn
On Thu, Jul 12, 2012 at 4:39 PM, Alex Queiroz asand...@gmail.com wrote: Hallo, On Thu, Jul 12, 2012 at 4:25 AM, Alex Shinn alexsh...@gmail.com wrote: I disagree - I think a stack grown too large is likely indicative of a programming error, or at the very least an inefficient algorithm. In

Re: [Chicken-users] Unbounded stack growth

2012-07-12 Thread Alex Queiroz
On Thu, Jul 12, 2012 at 9:47 AM, Alex Shinn alexsh...@gmail.com wrote: Wow, if you've got a magical Scheme compiler that can read my mind and fix all my bugs for me I'll switch right now! :) Are you really saying that it is ok for a Scheme program to crash with a segmentation fault

Re: [Chicken-users] Unbounded stack growth

2012-07-12 Thread Alex Shinn
On Thu, Jul 12, 2012 at 4:51 PM, Alex Queiroz asand...@gmail.com wrote: On Thu, Jul 12, 2012 at 9:47 AM, Alex Shinn alexsh...@gmail.com wrote: Wow, if you've got a magical Scheme compiler that can read my mind and fix all my bugs for me I'll switch right now! :) Are you really saying

[Chicken-users] Unbounded stack growth

2012-07-11 Thread Marc Feeley
I have been experimenting with the Spock Scheme to JavaScript compiler. I encountered a bug in its implementation of the Cheney on the MTA approach to tail-calls and continuations. The bug also exists for Chicken. In the Cheney on the MTA approach there needs to be a check, at regular

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread John Cowan
Marc Feeley scripsit: In this example, there will be an arbitrarily long sequence of C calls (in the unwinding of the recursion to even) with no Scheme call, so stack size checks will not be performed during the unwinding, yet the C stack grows during the unwinding. There is no stack

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Jim Ursetto
It seems that compiling with clang (llvm 3.0) prevents the crash, at least for values up to 20 million, on OS X and Linux. Any higher and I start to hit swap. I don't know why this works. Plain gcc on linux, and llvm-gcc (llvm 2.7) on OS X 10.7, do crash at about 600k here w/ stack ulimit 8M.

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Marc Feeley
On 2012-07-11, at 2:31 PM, John Cowan wrote: Marc Feeley scripsit: In this example, there will be an arbitrarily long sequence of C calls (in the unwinding of the recursion to even) with no Scheme call, so stack size checks will not be performed during the unwinding, yet the C stack grows

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Marc Feeley
On 2012-07-11, at 3:44 PM, Jim Ursetto wrote: It seems that compiling with clang (llvm 3.0) prevents the crash, at least for values up to 20 million, on OS X and Linux. Any higher and I start to hit swap. I don't know why this works. Plain gcc on linux, and llvm-gcc (llvm 2.7) on OS X

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Marc Feeley
On 2012-07-11, at 2:31 PM, John Cowan wrote: Marc Feeley scripsit: In this example, there will be an arbitrarily long sequence of C calls (in the unwinding of the recursion to even) with no Scheme call, so stack size checks will not be performed during the unwinding, yet the C stack grows

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Jim Ursetto
On Jul 11, 2012, at 2:47 PM, Marc Feeley wrote: I'm pretty sure LLVM is simply implementing the tail-call itself. So there is no stack growth in the unwinding phase. That is possible. We do currently disable __attribute__((noreturn)) on functions across the board when using clang, and last

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Shiro Kawai
or not, though. --shiro From: John Cowan co...@mercury.ccil.org Subject: Re: [Chicken-users] Unbounded stack growth Date: Wed, 11 Jul 2012 14:31:58 -0400 While you're right, it's not clear that this matters enough to fix. It's not a *correctness* error, since every implementation will blow up

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Felix
From: Marc Feeley fee...@iro.umontreal.ca Subject: [Chicken-users] Unbounded stack growth Date: Wed, 11 Jul 2012 13:23:30 -0400 I have been experimenting with the Spock Scheme to JavaScript compiler. I encountered a bug in its implementation of the Cheney on the MTA approach to tail-calls

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Felix
Performance should not trump safety and correctness. Absolutely right, yet everybody has a different perception of what performance, safety and correctness means. Segfaulting on _stack-overflow_ is not something that I'd call incorrect or unsafe - I'd call it inconvenient and it may be the

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Marc Feeley
On 2012-07-11, at 5:59 PM, Felix wrote: Performance should not trump safety and correctness. Absolutely right, yet everybody has a different perception of what performance, safety and correctness means. Segfaulting on _stack-overflow_ is not something that I'd call incorrect or unsafe -

Re: [Chicken-users] Unbounded stack growth

2012-07-11 Thread Alex Shinn
On Thu, Jul 12, 2012 at 10:52 AM, Marc Feeley fee...@iro.umontreal.ca wrote: On 2012-07-11, at 5:59 PM, Felix wrote: Performance should not trump safety and correctness. Absolutely right, yet everybody has a different perception of what performance, safety and correctness means.