summaryrefslogtreecommitdiffstats
path: root/ChangeLog
diff options
context:
space:
mode:
Diffstat (limited to 'ChangeLog')
-rw-r--r--ChangeLog21
1 files changed, 21 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 5dcad00e..7836e807 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,24 @@
+2009-11-01 Kaz Kylheku <kkylheku@gmail.com>
+
+ Bug ID 27899: Garbage collection problem: method of locating stack
+ bottom is unreliable due to the unpredictable allocation order of local
+ variables. The addresses of stack_bottom_0 and stack_bottom_1 variables
+ do not necessarily bracket the others which means that some local
+ variables in main can be out of the reach of the garbage collector:
+ our stack bottom is wrongly in the middle of the frame.
+
+ * lib.c (init): Removed one of the stack bottom parameters, so there
+ is only one. This is passed straight down to gc_init.
+ Also noticed that the oom_realloc variable was not being set
+ from the oom parameter.
+
+ * lib.h (init): Declaration updated.
+
+ * txr.c (txr_main): New static function.
+ (main): Calls init, and then txr_main. The idea is that txr_main
+ should get fresh stack frame. So the stack_bottom variable in main
+ should be outside of that stack frame.
+
2009-10-22 Kaz Kylheku <kkylheku@gmail.com>
* lib.c (equal): Fix broken LSTR and FUN cases.