summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--signal.c4
2 files changed, 17 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 67dd495b37..5c69ace214 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+Thu Nov 27 15:59:16 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * gc.c (ruby_stack_check): no check if using sigaltstack.
+
+ * signal.c (ALT_STACK_SIZE): default minimum size is insufficient
+ for method calls.
+
+ * signal.c (sigsegv): handles stack overflow if possible.
+
+ * thread.c (ruby_thread_stack_overflow): helper function to raise
+ sysstack_error.
+
+ * thread_pthread.c (ruby_stack_overflowed_p): checks for stack
+ overflow.
+
Thu Nov 27 10:40:52 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
* ext/bigdecimal/bigdecimal.c (BigDecimal_div2): should return
diff --git a/signal.c b/signal.c
index df41ddbdfd..e16308eebb 100644
--- a/signal.c
+++ b/signal.c
@@ -417,7 +417,7 @@ typedef RETSIGTYPE (*sighandler_t)(int);
#ifdef USE_SIGALTSTACK
#define SIGINFO_ARG , siginfo_t *info, void *ctx
#ifdef SIGSTKSZ
-#define ALT_STACK_SIZE SIGSTKSZ
+#define ALT_STACK_SIZE (SIGSTKSZ*2)
#else
#define ALT_STACK_SIZE (4*1024)
#endif
@@ -431,7 +431,7 @@ register_sigaltstack()
if (is_altstack_defined)
return;
- newSS.ss_sp = malloc(ALT_STACK_SIZE * 2);
+ newSS.ss_sp = malloc(ALT_STACK_SIZE);
if (newSS.ss_sp == NULL)
/* should handle error */
rb_bug("register_sigaltstack. malloc error\n");