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

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

bug#25247: 26.0.50; Concurrency crashes with XLib


From: Elias Mårtenson
Subject: bug#25247: 26.0.50; Concurrency crashes with XLib
Date: Fri, 30 Dec 2016 18:30:05 +0800

On 30 December 2016 at 17:41, Eli Zaretskii <eliz@gnu.org> wrote:

Elias, I'd be grateful if you could repeat your thread-related tests
from 2 weeks ago with the latest master (both in "emacs -nw" and in a
GUI session), and see if any of those problems are back.

I did some tests.

The C-g issue is still gone.

As for the concurrency issues. I have been hammering this thing pretty hard, and no crashes so far.

However, I have seen some strange issues. I've been trying to isolate the behaviour, but I don't have any more time to do so at the moment, so I'll just summarise where I am:

Issue 1:
========

I open IELM in one window, and an empty buffer "z" in another, and type the following:

(loop
  repeat 10
  do (make-thread (lambda ()
                    (let ((n (random 10)))
                      (with-current-buffer "z"
                        (sleep-for n)
                        (insert (format "Foo:%d\n" n)))))))

Here, I'd expect to see the "z" buffer being updated at the corresponding times. I.e. the message "Foo:4" should be displayed after 4 seconds. This is not what I see. Instead the messages appear in batches (i.e. several rows appearing at the same time).

Issue 2:
========

The following seems to be a problem with lexically bound lambda functions used in a thread. The following example illustrates the problem:

(let ((x "test"))
  (make-thread (lambda ()
                 (with-current-buffer "z"
                   (insert x)))))

I would expect this to insert "test" into the buffer, but instead nothing happens. Removing the reference to the variable "x" in the lambda makes it work.

Regards,
Elias

reply via email to

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