all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Pip Cet <pipcet@protonmail.com>
To: Ihor Radchenko <yantar92@posteo.net>
Cc: emacs-devel@gnu.org, "Gerd Möllmann" <gerd.moellmann@gmail.com>,
	"Eli Zaretskii" <eliz@gnu.org>,
	eller.helmut@gmail.com
Subject: Re: MPS: profiler
Date: Fri, 21 Jun 2024 08:23:16 +0000	[thread overview]
Message-ID: <KeVN8zEuCbKx4ulb1EgRCg8lvaPFRV2BDvsI-Ot9gfeRFzxYn0mxLmaMz87vTbBeO9-wQDFxpXgs9fr1yvTzkqJ4LzVyJYYyWp9NsWWi_lI=@protonmail.com> (raw)
In-Reply-To: <87v823xvq1.fsf@localhost>

On Thursday, June 20th, 2024 at 19:24, Ihor Radchenko <yantar92@posteo.net> wrote:
> I am playing around with scratch/igc branch for fun, and there is one
> crash that I can reproduce quite consistently.
> 
> All it takes is (1) compile Emacs without native-compilation support;
> (2) open Emacs; (3) M-x profiler-start; (4) run a complex operation.
> 
> Steps to reproduce:
> 
> 1. emacs -Q doc/misc/org.org
> 2. M-x profiler-start RET cpu RET
> 3. M-: (org-element-parse-buffer) RET
> 
> Without step 2, no crash.

Just sharing some information from a private discussion with Ihor:

I can reproduce this locally. I can also "fix" it locally, but the problem seems more complicated since Ihor reports the fix isn't working for him.

1. MPS uses SIGSEGV internally, usually transparently to the client program.

2. The profiler uses SIGPROF, then runs complicated code in the handler. My understanding is it's carefully tuned not to trigger traditional GC, but it can and will cause (handled) SIGSEGV.

3. MPS isn't reentrant enough to handle a SIGSEGV while it's handling a SIGSEGV, and will die with one of a number of errors.

The right thing to do, IMHO, is to let MPS know that it should block SIGPROF (and any other signals that might use managed memory) while handling SIGSEGV. Unfortunately, the MPS code in current git doesn't have facilities to do that, so I've applied this patch to MPS, which works here but doesn't for Ihor:

diff --git a/code/protsgix.c b/code/protsgix.c
index 966569c92..7c60d4fa2 100644
--- a/code/protsgix.c
+++ b/code/protsgix.c
@@ -143,7 +143,7 @@ void ProtSetup(void)
   int result;
 
   sa.sa_sigaction = sigHandle;
-  result = sigemptyset(&sa.sa_mask);
+  result = sigfillset(&sa.sa_mask);
   AVER(result == 0);
   sa.sa_flags = SA_SIGINFO | SA_RESTART;
 
Hope any of this helps,
Pip



  parent reply	other threads:[~2024-06-21  8:23 UTC|newest]

Thread overview: 106+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-20 19:25 MPS: profiler Ihor Radchenko
2024-06-20 19:40 ` Eli Zaretskii
2024-06-20 19:48   ` Ihor Radchenko
2024-06-20 19:58     ` Gerd Möllmann
2024-06-20 20:29       ` Ihor Radchenko
2024-06-21  5:57         ` Gerd Möllmann
2024-06-21  6:17         ` Eli Zaretskii
2024-06-21  6:54           ` Gerd Möllmann
2024-06-21  7:16             ` Eli Zaretskii
2024-06-21  7:32               ` Gerd Möllmann
2024-06-21  7:19             ` Helmut Eller
2024-06-21  7:36               ` Ihor Radchenko
2024-06-21  7:44                 ` Helmut Eller
2024-06-21  7:51                   ` Gerd Möllmann
2024-06-21  8:21                     ` Helmut Eller
2024-06-21  8:31                       ` Gerd Möllmann
2024-06-21 10:45                         ` Eli Zaretskii
2024-06-21 11:47                           ` Gerd Möllmann
2024-06-21 12:01                             ` Helmut Eller
2024-06-21 12:09                               ` Ihor Radchenko
2024-06-21 12:42                                 ` Helmut Eller
2024-06-21 12:51                                   ` Ihor Radchenko
2024-06-21 14:49                                     ` MPS make-thread (was: MPS: profiler) Helmut Eller
2024-06-21 15:20                                       ` MPS make-thread Gerd Möllmann
2024-06-21 15:33                                         ` Gerd Möllmann
2024-06-21 15:42                                           ` Helmut Eller
2024-06-21 16:46                                             ` Gerd Möllmann
2024-06-21 18:31                                               ` Gerd Möllmann
2024-06-21 19:58                                                 ` Ihor Radchenko
2024-06-21 20:10                                                   ` Gerd Möllmann
2024-06-22 18:52                                                     ` Ihor Radchenko
2024-06-22 19:17                                                       ` Eli Zaretskii
2024-06-23  3:18                                                         ` Gerd Möllmann
2024-06-23  4:54                                                           ` Gerd Möllmann
2024-06-23  6:19                                                             ` Eli Zaretskii
2024-06-23  5:53                                                           ` Eli Zaretskii
2024-06-23  6:45                                                             ` Gerd Möllmann
2024-06-23  8:53                                                               ` Eli Zaretskii
2024-06-23  9:36                                                                 ` Gerd Möllmann
2024-06-23 10:21                                                                   ` Gerd Möllmann
2024-06-23 10:27                                                                     ` Gerd Möllmann
2024-06-23 13:19                                                                       ` Eli Zaretskii
2024-06-23 14:16                                                                         ` Gerd Möllmann
2024-06-26 11:20                                                                         ` Ihor Radchenko
2024-06-26 11:25                                                                           ` Gerd Möllmann
2024-06-22 19:26                                                       ` Gerd Möllmann
2024-06-22  6:29                                                   ` Eli Zaretskii
2024-06-22 18:53                                                     ` Ihor Radchenko
2024-06-22 19:04                                                       ` Eli Zaretskii
2024-06-22 19:17                                                         ` Ihor Radchenko
2024-06-22 18:13                                                 ` Helmut Eller
2024-06-22 18:31                                                   ` Gerd Möllmann
2024-06-25 18:42                                                   ` MPS native subrs (was: MPS make-thread) Helmut Eller via Emacs development discussions.
2024-06-25 20:10                                                     ` MPS native subrs Gerd Möllmann
2024-06-25 20:48                                                       ` Gerd Möllmann
2024-06-26  6:31                                                         ` Helmut Eller
2024-06-26  7:00                                                           ` Gerd Möllmann
2024-06-26 13:45                                                             ` Eli Zaretskii
2024-06-26 14:18                                                               ` Gerd Möllmann
2024-06-26 15:15                                                             ` Helmut Eller
2024-06-26 17:12                                                               ` Gerd Möllmann
2024-06-26 13:30                                                         ` Eli Zaretskii
2024-06-26 13:34                                                         ` Eli Zaretskii
2024-06-26  4:55                                                       ` Gerd Möllmann
2024-06-26 13:36                                                       ` Eli Zaretskii
2024-06-26 13:26                                                     ` MPS native subrs (was: MPS make-thread) Eli Zaretskii
2024-06-26 14:41                                                     ` MPS native subrs Andrea Corallo
2024-06-21 12:43                                 ` MPS: profiler Gerd Möllmann
2024-06-21 16:11                                   ` Ihor Radchenko
2024-06-21 12:41                               ` Gerd Möllmann
2024-06-21 14:10                             ` Eli Zaretskii
2024-06-21 16:09                               ` Ihor Radchenko
2024-06-21 16:22                                 ` Gerd Möllmann
2024-06-21 18:51                                 ` Ihor Radchenko
2024-06-21 18:58                                   ` Gerd Möllmann
2024-06-21 19:23                                     ` Ihor Radchenko
2024-06-21 19:50                                       ` Gerd Möllmann
2024-06-21 20:02                                         ` Ihor Radchenko
2024-06-22  6:37                                           ` Eli Zaretskii
2024-06-21  7:43               ` Gerd Möllmann
2024-06-21  7:50                 ` Ihor Radchenko
2024-06-21  7:53                   ` Gerd Möllmann
2024-06-21 10:39                   ` Eli Zaretskii
2024-06-21 10:57                     ` Ihor Radchenko
2024-06-21 10:58                       ` Eli Zaretskii
2024-06-21 11:20                         ` Ihor Radchenko
2024-06-21 11:29                           ` Eli Zaretskii
2024-06-21 11:33                         ` Gerd Möllmann
2024-06-21 19:55                           ` Dmitry Gutov
2024-06-21 16:12           ` Ihor Radchenko
2024-06-21 18:48             ` Eli Zaretskii
2024-06-21 10:49         ` Pip Cet
2024-06-21 10:56           ` Eli Zaretskii
2024-06-21  5:56     ` Eli Zaretskii
2024-06-21  6:14       ` Ihor Radchenko
2024-06-20 19:50 ` Gerd Möllmann
2024-06-20 20:02   ` Ihor Radchenko
2024-06-21  5:58     ` Eli Zaretskii
2024-06-21  6:16       ` Ihor Radchenko
2024-06-21  8:23 ` Pip Cet [this message]
2024-06-21  8:43   ` Ihor Radchenko
2024-06-21  8:50   ` Gerd Möllmann
2024-06-21 10:43   ` Eli Zaretskii
2024-06-21 11:00     ` Pip Cet
2024-06-21 11:09       ` Eli Zaretskii
2024-06-21 11:39         ` Gerd Möllmann

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='KeVN8zEuCbKx4ulb1EgRCg8lvaPFRV2BDvsI-Ot9gfeRFzxYn0mxLmaMz87vTbBeO9-wQDFxpXgs9fr1yvTzkqJ4LzVyJYYyWp9NsWWi_lI=@protonmail.com' \
    --to=pipcet@protonmail.com \
    --cc=eliz@gnu.org \
    --cc=eller.helmut@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=gerd.moellmann@gmail.com \
    --cc=yantar92@posteo.net \
    /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.