From: Pip Cet via "Emacs development discussions." <emacs-devel@gnu.org>
To: Helmut Eller <eller.helmut@gmail.com>
Cc: "Gerd Möllmann" <gerd.moellmann@gmail.com>,
"Eli Zaretskii" <eliz@gnu.org>,
spd@toadstyle.org, emacs-devel@gnu.org
Subject: Re: igc, macOS avoiding signals
Date: Mon, 30 Dec 2024 15:25:13 +0000 [thread overview]
Message-ID: <874j2lyz1c.fsf@protonmail.com> (raw)
In-Reply-To: <874j2lmd37.fsf@gmail.com>
"Helmut Eller" <eller.helmut@gmail.com> writes:
> On Mon, Dec 30 2024, Pip Cet wrote:
>
>> "Helmut Eller" <eller.helmut@gmail.com> writes:
>>> Very few of Emacs' signal handlers actually touch a barrier. I've also
>>
>> Indeed. These crashes are rare in typical usage, which doesn't mean we
>> should delay fixing them until Emacs is "unstable enough". It already
>> is, IMHO, because we take that approach too frequently.
>>
>>> not seen any reproducable receipes for the "signal issues" that the igc
>>> branch supposedly has.
>>
>> Removing the SIGPROF protection code should allow Ihor's recipe to crash
>> again.
>
> Talking about SIGPROF protection code. It appears to me now (again)
> that, for the SIGPROF handler, this pseudo code
>
> if (mps_arena_busy (<arena>))
> plog->gc_count = saturated_add (plog->gc_count, count);
> else
> record_backtrace (plog, count);
>
> is safe.
Yes, it's safe, because it does have protection code. The question was
the extent to which this protection code is required, and whether we can
find another way to deliver signals which doesn't require it.
IMHO, we now have three solutions that are still in the running (my
order of preference):
1. keep the current code and special-case some signals which are needed
for user responsiveness
2. use the signal serialization thread you proposed
3. use an allocation thread, but keep SIGSEGV on the main thread
The first two can be combined with blocking other signals in the SIGSEGV
handler (which would make all platforms behave the same and avoid
SIGSEGV-handler-SIGSEGV races). The third requires it.
I'd like to take (3) out of the picture for now. It's working here
(still forwarding SIGSEGV, but that's not the point), and performance
seems okay (better, for some unknown reason; maybe it's just chunk
size), but I couldn't make it behave reproducibly when run under rr, and
it makes a "GC is rare" assumption when it splits MPS objects. I'd like
to be able to use rr, and "rare GC" assumptions mean that further
improvements to or even fine-tuning of MPS would have to happen
differently.
IOW, MPS needs hacking to make an allocation thread truly viable, mostly
to distinguish fast-path and slow-path allocations. Not a major change,
I hope, but also out of scope for getting things to work with upstream
MPS, which remains my goal.
I think improving (1) is most likely to do that (but that would require
a shadow signal mask, most likely).
> If we don't hold the lock, then mps_arena_busy returns false
> and we can access memory. We are safe even if another thread has
> claimed the lock by the time that we reach record_backtrace: the SIGPROF
> handler will just block until the lock is released.
>
> Does somebody disagree?
Not me.
Pip
next prev parent reply other threads:[~2024-12-30 15:25 UTC|newest]
Thread overview: 119+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-12-28 13:24 igc, macOS avoiding signals Sean Devlin
2024-12-28 13:28 ` Gerd Möllmann
2024-12-28 14:31 ` Eli Zaretskii
2024-12-28 14:45 ` Gerd Möllmann
2024-12-30 7:13 ` Gerd Möllmann
2024-12-30 7:23 ` Gerd Möllmann
2024-12-30 7:39 ` Helmut Eller
2024-12-30 7:51 ` Gerd Möllmann
2024-12-30 8:02 ` Helmut Eller
2024-12-30 8:47 ` Gerd Möllmann
2024-12-30 9:29 ` Helmut Eller
2024-12-30 9:47 ` Helmut Eller
2024-12-30 11:54 ` Gerd Möllmann
2024-12-30 10:05 ` Gerd Möllmann
2024-12-30 10:27 ` Helmut Eller
2024-12-30 11:53 ` Gerd Möllmann
2024-12-30 14:54 ` Eli Zaretskii
2024-12-30 15:05 ` Gerd Möllmann
2024-12-30 15:05 ` Pip Cet via Emacs development discussions.
2024-12-30 12:32 ` Pip Cet via Emacs development discussions.
2024-12-30 14:24 ` Eli Zaretskii
2024-12-30 14:59 ` Helmut Eller
2024-12-30 15:15 ` Eli Zaretskii
2024-12-30 15:24 ` Helmut Eller
2024-12-30 15:25 ` Pip Cet via Emacs development discussions. [this message]
2024-12-30 15:34 ` Gerd Möllmann
2024-12-30 19:02 ` Helmut Eller
2024-12-30 20:03 ` Pip Cet via Emacs development discussions.
2024-12-30 15:30 ` Gerd Möllmann
2024-12-30 16:57 ` Helmut Eller
2024-12-30 17:41 ` Gerd Möllmann
2024-12-30 17:49 ` Pip Cet via Emacs development discussions.
2024-12-30 18:33 ` Helmut Eller
2024-12-30 17:49 ` Eli Zaretskii
2024-12-30 18:37 ` Gerd Möllmann
2024-12-30 19:15 ` Eli Zaretskii
2024-12-30 19:55 ` Gerd Möllmann
2024-12-31 7:34 ` Helmut Eller
2024-12-31 9:19 ` Gerd Möllmann
2024-12-31 9:51 ` Helmut Eller
2024-12-31 10:00 ` Gerd Möllmann
2024-12-31 13:49 ` Pip Cet via Emacs development discussions.
2024-12-31 14:13 ` Eli Zaretskii
2024-12-31 9:51 ` Gerd Möllmann
2024-12-31 13:18 ` Eli Zaretskii
2024-12-31 14:15 ` Gerd Möllmann
2024-12-31 14:27 ` Eli Zaretskii
2024-12-31 15:05 ` Gerd Möllmann
2024-12-31 15:14 ` Eli Zaretskii
2024-12-31 15:20 ` Gerd Möllmann
2024-12-31 15:12 ` Helmut Eller
2024-12-31 15:31 ` Gerd Möllmann
2024-12-31 15:37 ` Helmut Eller
2024-12-31 15:39 ` Gerd Möllmann
2024-12-31 10:09 ` Pip Cet via Emacs development discussions.
2024-12-31 13:27 ` Eli Zaretskii
2024-12-31 14:29 ` Pip Cet via Emacs development discussions.
2024-12-31 14:34 ` Eli Zaretskii
2024-12-31 15:08 ` Gerd Möllmann
2025-01-03 18:37 ` Helmut Eller
2025-01-03 19:55 ` Eli Zaretskii
2024-12-31 15:07 ` Gerd Möllmann
2024-12-31 13:14 ` Eli Zaretskii
2024-12-31 14:19 ` Pip Cet via Emacs development discussions.
2024-12-31 14:31 ` Eli Zaretskii
2024-12-31 14:40 ` Helmut Eller
2024-12-31 14:55 ` Gerd Möllmann
2024-12-31 15:07 ` Eli Zaretskii
2024-12-31 15:13 ` Gerd Möllmann
2024-12-31 15:16 ` Helmut Eller
2025-01-02 8:37 ` Stefan Kangas
2025-01-02 9:05 ` Eli Zaretskii
2025-01-02 10:00 ` Helmut Eller
2025-01-02 12:34 ` Pip Cet via Emacs development discussions.
2025-01-02 13:08 ` Gerd Möllmann
2025-01-02 15:42 ` Eli Zaretskii
2025-01-02 17:56 ` Pip Cet via Emacs development discussions.
2024-12-30 12:42 ` Pip Cet via Emacs development discussions.
2024-12-30 13:40 ` Gerd Möllmann
2024-12-30 13:53 ` Pip Cet via Emacs development discussions.
2024-12-30 14:02 ` Gerd Möllmann
2024-12-30 14:32 ` Pip Cet via Emacs development discussions.
2024-12-30 14:52 ` Gerd Möllmann
2024-12-30 11:18 ` Pip Cet via Emacs development discussions.
2024-12-30 12:23 ` Gerd Möllmann
2024-12-30 11:11 ` Pip Cet via Emacs development discussions.
2024-12-30 12:13 ` Gerd Möllmann
2024-12-30 10:53 ` Pip Cet via Emacs development discussions.
2024-12-30 10:46 ` Pip Cet via Emacs development discussions.
2024-12-30 12:00 ` Gerd Möllmann
2024-12-30 12:07 ` Gerd Möllmann
2024-12-28 15:12 ` Pip Cet via Emacs development discussions.
2024-12-28 17:30 ` Eli Zaretskii
2024-12-28 18:40 ` Pip Cet via Emacs development discussions.
2024-12-28 18:50 ` Eli Zaretskii
2024-12-28 19:07 ` Eli Zaretskii
2024-12-28 19:20 ` Pip Cet via Emacs development discussions.
2024-12-28 19:36 ` Eli Zaretskii
2024-12-28 20:54 ` Pip Cet via Emacs development discussions.
2024-12-29 5:51 ` Eli Zaretskii
2024-12-28 19:15 ` Pip Cet via Emacs development discussions.
2024-12-28 19:30 ` Eli Zaretskii
2024-12-28 16:29 ` Pip Cet via Emacs development discussions.
2024-12-29 2:21 ` Sean Devlin
2024-12-29 12:22 ` Pip Cet via Emacs development discussions.
2024-12-29 15:01 ` Gerd Möllmann
2024-12-29 19:44 ` Pip Cet via Emacs development discussions.
2024-12-30 6:16 ` Gerd Möllmann
2024-12-30 12:51 ` Gerd Möllmann
2024-12-30 13:09 ` Pip Cet via Emacs development discussions.
2024-12-30 13:28 ` Gerd Möllmann
2024-12-30 5:24 ` Sean Devlin
2024-12-30 6:17 ` Gerd Möllmann
2024-12-30 5:23 ` Sean Devlin
-- strict thread matches above, loose matches on Subject: below --
2024-12-28 6:40 Gerd Möllmann
2024-12-28 12:49 ` Pip Cet via Emacs development discussions.
2024-12-28 12:55 ` Gerd Möllmann
2024-12-28 13:50 ` Óscar Fuentes
2024-12-29 8:02 ` Helmut Eller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=874j2lyz1c.fsf@protonmail.com \
--to=emacs-devel@gnu.org \
--cc=eliz@gnu.org \
--cc=eller.helmut@gmail.com \
--cc=gerd.moellmann@gmail.com \
--cc=pipcet@protonmail.com \
--cc=spd@toadstyle.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.