equal
deleted
inserted
replaced
176 // Handle ALL stack overflow variations here |
176 // Handle ALL stack overflow variations here |
177 if (sig == SIGSEGV) { |
177 if (sig == SIGSEGV) { |
178 address addr = (address) info->si_addr; |
178 address addr = (address) info->si_addr; |
179 |
179 |
180 // check if fault address is within thread stack |
180 // check if fault address is within thread stack |
181 if (addr < thread->stack_base() && |
181 if (thread->on_local_stack(addr)) { |
182 addr >= thread->stack_base() - thread->stack_size()) { |
|
183 // stack overflow |
182 // stack overflow |
184 if (thread->in_stack_yellow_zone(addr)) { |
183 if (thread->in_stack_yellow_reserved_zone(addr)) { |
185 thread->disable_stack_yellow_zone(); |
184 thread->disable_stack_yellow_reserved_zone(); |
186 ShouldNotCallThis(); |
185 ShouldNotCallThis(); |
187 } |
186 } |
188 else if (thread->in_stack_red_zone(addr)) { |
187 else if (thread->in_stack_red_zone(addr)) { |
189 thread->disable_stack_red_zone(); |
188 thread->disable_stack_red_zone(); |
190 ShouldNotCallThis(); |
189 ShouldNotCallThis(); |