all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: martin rudalics <rudalics@gmx.at>
Cc: m.sujith@gmail.com, 30182@debbugs.gnu.org
Subject: bug#30182: Update
Date: Fri, 02 Feb 2018 18:00:49 +0200	[thread overview]
Message-ID: <831si3crf2.fsf@gnu.org> (raw)
In-Reply-To: <5A742122.3090008@gmx.at> (message from martin rudalics on Fri, 02 Feb 2018 09:28:18 +0100)

> Date: Fri, 02 Feb 2018 09:28:18 +0100
> From: martin rudalics <rudalics@gmx.at>
> CC: m.sujith@gmail.com, 30182@debbugs.gnu.org
> 
>  > "Asynchronous redisplay" could only mean the call to expose_frame, is
>  > that right?
> 
> That's what I meant, yes.

Actually, mouse movement could also cause that, via the MotionNotify
event that calls note_mouse_highlight.  Right?

> note_mouse_highlight calls note_mode_line_or_margin_highlight which
> does
> 
> 		  help_echo_string = (FUNCTIONP (default_help)
> 				      ? safe_call1 (default_help, window)
> 				      : default_help);

Does this mean we can now actually call Lisp asynchronously upon every
mouse movement?  That's a definite no-no.

> We could instrument the code around this to do something special when
> Vtimer_check_in_progress is non-nil.

We could bind inhibit-eval-during-redisplay to a non-nil value.
However, that will disable your function, and defeat the whole purpose
of making mode-line-default-help-echo a function.

But I think the problem introduced by this recent change, which allows
Lisp to be called asynchronously, is a much more serious problem than
just timer_check.  We _cannot_ call Lisp asynchronously in any safe
way.  I'm afraid we will have to roll back the change which allowed
mode-line-default-help-echo to be a function.  Can you find an
alternative way of achieving the same effect, that doesn't call Lisp
from note_mode_line_or_margin_highlight?

I think we should introduce some protection against making such
implementation mistakes in the future.  Like some flag that we set
when redisplay is entered asynchronously, and that is checked in
safe__call, where we'd signal an error (or maybe even abort, under
"--enable-checking") if the flag is set.  This should allow us to find
such problems much faster.  WDYT?





  parent reply	other threads:[~2018-02-02 16:00 UTC|newest]

Thread overview: 68+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-20  6:26 bug#30182: 27.0.50; Crash when doing mouse-over on modeline Sujith
2018-01-20  6:28 ` bug#30182: Update Sujith
2018-01-20 10:35   ` martin rudalics
2018-01-20 10:45     ` Sujith
2018-01-20 14:12       ` martin rudalics
2018-01-20 15:27         ` Eli Zaretskii
2018-01-21  2:15         ` Sujith
2018-01-21  3:39           ` Eli Zaretskii
2018-01-21  3:55             ` Sujith
2018-01-21 16:15               ` Eli Zaretskii
2018-01-21 18:29                 ` Sujith
2018-01-22  9:15                   ` martin rudalics
2018-01-22 15:09                     ` Sujith
2018-01-22 17:37                       ` Eli Zaretskii
2018-01-22 18:59                         ` martin rudalics
2018-01-22 20:40                           ` Eli Zaretskii
2018-01-23 18:44                             ` martin rudalics
2018-01-23 19:53                               ` Eli Zaretskii
2018-01-24  8:39                                 ` martin rudalics
2018-01-23  2:49                           ` Sujith
2018-01-23 16:18                             ` Eli Zaretskii
2018-01-23 17:07                               ` Sujith
2018-01-23 17:25                                 ` Eli Zaretskii
2018-01-23 18:10                                   ` Eli Zaretskii
2018-01-23 18:45                                     ` martin rudalics
2018-01-23 19:51                                       ` Eli Zaretskii
2018-01-24  8:38                                         ` martin rudalics
2018-01-24 19:10                                           ` Eli Zaretskii
2018-01-24 20:05                                             ` martin rudalics
2018-01-23 18:44                                   ` martin rudalics
2018-01-23 19:59                                     ` Eli Zaretskii
2018-01-24  8:39                                       ` martin rudalics
2018-01-24 19:13                                         ` Eli Zaretskii
2018-01-24 20:06                                           ` martin rudalics
2018-01-27  8:26                             ` martin rudalics
2018-01-28  0:53                               ` Sujith
2018-01-28  8:26                                 ` martin rudalics
2018-01-29  5:13                                   ` Sujith
2018-01-29 10:04                                     ` martin rudalics
2018-01-29 15:50                                       ` Eli Zaretskii
2018-01-30  8:30                                         ` martin rudalics
2018-01-30 13:32                                           ` Eli Zaretskii
2018-01-31  9:31                                             ` martin rudalics
2018-01-31 14:43                                               ` Eli Zaretskii
2018-02-01  2:29                                               ` Sujith
2018-02-01  9:26                                                 ` martin rudalics
2018-02-01 17:44                                                   ` Eli Zaretskii
2018-02-02  8:28                                                     ` martin rudalics
2018-02-02  8:37                                                       ` martin rudalics
2018-02-02 16:00                                                       ` Eli Zaretskii [this message]
2018-02-03  9:03                                                         ` martin rudalics
2018-02-03 10:29                                                           ` Eli Zaretskii
2018-02-04 10:01                                                             ` martin rudalics
2018-02-04 18:21                                                               ` Eli Zaretskii
2018-02-06  9:28                                                                 ` martin rudalics
2018-02-10  9:47                                                                   ` martin rudalics
2018-02-02 14:14                                                     ` Noam Postavsky
2018-02-02 16:11                                                       ` Eli Zaretskii
2018-02-03  9:04                                                       ` martin rudalics
2018-02-03 10:30                                                         ` Eli Zaretskii
2018-02-04 10:01                                                           ` martin rudalics
2018-02-04 18:01                                                             ` Eli Zaretskii
2018-01-29 15:53                                   ` Eli Zaretskii
2018-01-30  8:30                                     ` martin rudalics
2018-01-30 13:34                                       ` Eli Zaretskii
2018-01-31  9:31                                         ` martin rudalics
2018-01-31 14:44                                           ` Eli Zaretskii
2018-01-21 18:37           ` Sujith

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=831si3crf2.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=30182@debbugs.gnu.org \
    --cc=m.sujith@gmail.com \
    --cc=rudalics@gmx.at \
    /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.