diff options
author | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-11 12:28:41 +0000 |
---|---|---|
committer | kosaki <kosaki@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2011-08-11 12:28:41 +0000 |
commit | d33ccac173969a3cb96b72d835a965bfa6decc3e (patch) | |
tree | 420ffa2f67db6864b25882a1f29b51543a968932 /gc.c | |
parent | 892e9111528833ede206fb69ad7389d307b73a56 (diff) |
* backport r32815 from trunk.
* gc.c (init_heap): allocate sigaltstack after heaps are allocated.
[ruby-dev:44315] [Bug #5139]
* vm.c (thread_free): use free because objspace is not ready.
* vm.c (th_init): use malloc because objspace is not ready.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@32933 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'gc.c')
-rw-r--r-- | gc.c | 8 |
1 files changed, 8 insertions, 0 deletions
@@ -1085,6 +1085,14 @@ static void init_heap(rb_objspace_t *objspace) { add_heap_slots(objspace, HEAP_MIN_SLOTS / HEAP_OBJ_LIMIT); +#ifdef USE_SIGALTSTACK + { + /* altstack of another threads are allocated in another place */ + rb_thread_t *th = GET_THREAD(); + free(th->altstack); /* free previously allocated area */ + th->altstack = xmalloc(ALT_STACK_SIZE); + } +#endif heaps_inc = 0; objspace->profile.invoke_time = getrusage_time(); |