bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#30182: Update


From: martin rudalics
Subject: bug#30182: Update
Date: Wed, 24 Jan 2018 09:38:49 +0100

>>   >   . Could the problem be caused by mode-line-default-help-echo being a
>>   >     function now, not just a string?  Maybe try to revert only that
>>   >     portion of the changeset, and see if that helps.
>>
>> It can be made into a string and the OP confirmed already that doing
>> that fixes things.
>
> He did?  If so, I missed that.  I thought he only said that disabling
> the part that runs the timer in the :eval form prevents the problem.

I asked the OP to

  Just to eliminate one possible cause: Does the bug disappear when you
  customize `mode-line-default-help-echo' to the default value of the
  'string' alternative?

and he answered that

  Yes, if that is done, then the crash doesn't happen.

> So if using a string instead of a function the returns a string solves
> the problem, then I guess we should try and understand why a function
> causes the problem.

Apparently because evaluating that function creates a timer.

>> The OP already checked that wrapping `mode-line-default-help-echo'
>> into a condition-case does not help.
>
> That doesn't surprise me, because safe_call1 alread runs the function
> inside condition-case.  But catching an error might not be all that
> needs to be done to undo the damage, so I think it is important to
> establish whether there is indeed an error signaled by that function.

w3m.el, when creating a buffer for its purposes, does

  (setq mode-line-buffer-identification
        `(
[...]
          (w3m-current-process
           "Loading..." ,(if (fboundp 'format-mode-line)
                             '(:eval (w3m-modeline-title))

where the latter contains

(defun w3m-modeline-title ()
[...]
                                (condition-case nil
                                    (format-mode-line mode-line-format 1)
                                  (error "")))
[...]
            (run-at-time 0.5 nil
                         (lambda (buffer)
                           (when (buffer-live-p buffer)
                             (with-current-buffer buffer
                               (setq w3m-modeline-title-timer nil))))
                         (current-buffer)))))))


But I haven't been able yet to trigger the crash from here.

martin





reply via email to

[Prev in Thread] Current Thread [Next in Thread]