[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-janitors] #1283: Runaway stack problem
From: |
Chicken Trac |
Subject: |
Re: [Chicken-janitors] #1283: Runaway stack problem |
Date: |
Sun, 24 Apr 2016 12:31:09 -0000 |
#1283: Runaway stack problem
-----------------------------+--------------------
Reporter: sjamaan | Owner:
Type: defect | Status: new
Priority: critical | Milestone: 4.11.0
Component: core libraries | Version: 4.10.x
Resolution: | Keywords:
-----------------------------+--------------------
Comment (by sjamaan):
OK, the reason for this is extremely simple and I don't understand why
this hasn't caused problems before:
- When a signal is received by the process, we call
{{{C_raise_interrupt}}}, which resets the stack pointer to the bottom of
the stack, so that the stack checks "think" the stack is full (while
really it isn't)
- Normally, a {{{C_demand()}}} call will take care of handling this by
triggering a GC/signal handler.
- A {{{C_stack_overflow_check}}} (or a direct call to
{{{C_stack_check1}}}) performs more or less the same checks as
{{{C_demand()}}} does, so if this is the first thing that happens after a
signal arrived, it will simply bomb. That's why sometimes it shows a
stack overflow error and other times a {{{C_CIRCULAR_DATA_ERROR}}}, if the
signal happens **just** before a call to {{{equal?}}}.
--
Ticket URL: <http://bugs.call-cc.org/ticket/1283#comment:1>
CHICKEN Scheme <http://www.call-cc.org/>
CHICKEN Scheme is a compiler for the Scheme programming language.