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

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

bug#37480: 27.0.50; uncaught exception


From: Christian Johansson
Subject: bug#37480: 27.0.50; uncaught exception
Date: Mon, 23 Sep 2019 07:18:25 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:60.0) Gecko/20100101 Thunderbird/60.9.0

Hi

Alright, I didn't know about that function. Can you give an example of how to use it? It tried the following but it doesn't work, it seems the thread dies after the signal and I'm not sure were it exits.

(make-thread
 (lambda()
   (message "Start of asynchronous thread")
   (signal 'error '("Fatal error"))
   (message "End of asynchronous thread")
   (message "Last error %s" (thread-last-error))))

For my ssh-deploy plugin, sometimes a asynchronous process or thread gets an error, could be network issues for instance and I would like to be able to handle these cases. I'm trying to make sure there is only one asynchronous process or thread simultaneously related to a local file, this is to avoid race conditions that otherwise occur with my plugin, especially when on a bad connection.

I would be interested in exploring how to signal the main thread from the created thread, where can I read more about that?

Hälsningar / Best Regards
Christian

On 2019-09-22 17:39, Eli Zaretskii wrote:
Cc: 37480@debbugs.gnu.org
From: Christian Johansson <christian@cvj.se>
Date: Sun, 22 Sep 2019 17:26:28 +0200

(condition-case
      nil
      (make-thread
       (lambda()
         (message "Start of asynchronous thread")
         (signal 'error '("Fatal error"))
         (message "End of asynchronous thread")))
    (message "Catched error"))

I have a case were a error occurs inside a tramp thread and I would like
to be able to handle it
You don't need condition-case in this case, you just need to examine
the value of thread-last-error when the thread exits.

Alternatively, you could try making the thread you start signal the
main thread, then the main thread should be able to catch that error.

In general, errors are thread-local, so you cannot catch an error
signaled in another thread.





reply via email to

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