[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Chicken-hackers] [PATCH] Fix #1317
From: |
Peter Bex |
Subject: |
[Chicken-hackers] [PATCH] Fix #1317 |
Date: |
Sat, 24 Sep 2016 12:12:01 +0200 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
Hi all,
At the Sun & Fun conference I had some time to look into #1317, which
was tricky to find but once found easy to fix.
The reason the fibc benchmark would hang is because the "addc" procedure
gets compiled to a looping C function which builds up stack, and then it
needs to perform a minor GC. When it does, it needs to save the
argvector so that it can re-invoke the calculation's continuation.
The bug is that it would save the _original_ argvector, while the loop
will mutate a working copy of each argument. The fix simply refreshes
the argvector with the current working values.
I decided not to add fibc as a test, because it's such an extremely
specific issue, and it's hard to guarantee that it will be compiled
exactly in such a way that it triggers this bug.
Cheers,
Peter
0001-Copy-temp-arg-values-back-into-argvector-on-loop.master.patch
Description: Text Data
0001-Copy-temp-arg-values-back-into-argvector-on-loop.chicken-5.patch
Description: Text Data
signature.asc
Description: Digital signature
- [Chicken-hackers] [PATCH] Fix #1317,
Peter Bex <=