chicken-janitors
[Top][All Lists]
Advanced

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

[Chicken-janitors] Re: #531: "Snowdigest" egg causes stack overflow erro


From: Chicken Trac
Subject: [Chicken-janitors] Re: #531: "Snowdigest" egg causes stack overflow error in tests with experimental
Date: Thu, 31 Mar 2011 10:34:13 -0000

#531: "Snowdigest" egg causes stack overflow error in tests with experimental
-----------------------------+----------------------------------------------
  Reporter:  sjamaan         |       Owner:  felix         
      Type:  defect          |      Status:  closed        
  Priority:  critical        |   Milestone:  4.7.0         
 Component:  core libraries  |     Version:  4.6.x         
Resolution:  fixed           |    Keywords:  stack overflow
-----------------------------+----------------------------------------------
Changes (by felix):

  * status:  new => closed
  * resolution:  => fixed


Comment:

 The problem appears to be that the internal calculation-routines in
 snowdigest are optimized into non-CPS "direct" calls (this code is very
 tight and does lots of fixnum-arithmetic). It is also recursive, so,
 depending on initial stack size, it may happen that the recursive direct-
 style part is running while the stack is already relatively near to the
 limit (i.e. shortly before CPS-code would trigger a minor GC). I have
 raised the size of the "reserve" area on the stack for this situation (it
 was 4096 bytes before, now it's 64k).

 There also was a problem with garbage bits in character values for which
 the internal comparison routines didn't work correctly.

 See "experimental" branch for the fix. The char-comparison change will
 only propagate by compiling the compiler with itself and then rebuilding.

-- 
Ticket URL: <http://bugs.call-cc.org/ticket/531#comment:1>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.

reply via email to

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