[Webkit-unassigned] [Bug 187297] [linux] ASSERT: Using an alternative signal stack is not supported. Consider disabling the concurrent GC.

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Tue Jul 3 23:37:18 PDT 2018


https://bugs.webkit.org/show_bug.cgi?id=187297

--- Comment #2 from Yusuke Suzuki <utatane.tea at gmail.com> ---
Why alternative stack is not supported is,

1. when a signal handler with an alternative stack flag is invoked, it's stack pointer is an alternative stack.
2. while executig a signal handler, SIGUSR1 is emitted to suspend the thread
3. Nested signal handler is invoked, where machine context's stack pointer is an alternative stack.
4. stack scan is broken.

I think this is not Linux specific. Even in Darwin, an alternative stack is not supported.

1. when a signal handler with an alternative stack flag is invoked, it's stack pointer is an alternative stack.
2. while executig a signal handler, thread_suspend is executed
3. saved thread context's stack pointer is pointing an alternative stack
4. stack scan is broken.

In Linux, the way to avoid this issue is,

1. Do not use an alternative stack

Due to the above reason, not using an alternative stack just fixes the problem.

2. Add SIGUSR1 to a signal mask when an alternative stack flag is specified.

The root cause of the problem is that SIGUSR1 signal handler is invoked while executing a signal handler with an alternative stack. So setting SIGUSR1 to sa_mask can fix the issue.

I think the current assertion is valid in both cases.
In Darwin, we do not have the way to fix the issue except for not using an alternative stack.

Mark, do you have any idea?

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.webkit.org/pipermail/webkit-unassigned/attachments/20180704/ae07a75f/attachment.html>


More information about the webkit-unassigned mailing list