GNU bug report logs - #25247
26.0.50; Concurrency crashes

Previous Next

Package: emacs;

Reported by: Tino Calancha <tino.calancha <at> gmail.com>

Date: Thu, 22 Dec 2016 10:21:02 UTC

Severity: normal

Tags: fixed

Found in version 26.0.50

Done: npostavs <at> users.sourceforge.net

Bug is archived. No further changes may be made.

Full log


Message #47 received at 25247 <at> debbugs.gnu.org (full text, mbox):

From: Elias MÃ¥rtenson <lokedhs <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: raeburn <at> raeburn.org, 25247 <at> debbugs.gnu.org,
 Tino Calancha <tino.calancha <at> gmail.com>
Subject: Re: bug#25247: 26.0.50; Concurrency crashes with XLib
Date: Fri, 30 Dec 2016 18:30:05 +0800
[Message part 1 (text/plain, inline)]
On 30 December 2016 at 17:41, Eli Zaretskii <eliz <at> 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
[Message part 2 (text/html, inline)]

This bug report was last modified 8 years and 137 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.