Subject: bug#33135: 27.0.50; (make-thread) TRAMP interactive freeze macOS 10.14

From: Christian Johansson <[email-masked]>
Date: Thu, 25 Oct 2018 07:03:02 +0200

Alright, I guessed that the threaded user-interaction wasn't completed 
yet, TRAMP without user-interaction seems to work however. Keep up the 
good work. At least it should be easy to test it once it's finished with 
my test. If you access my example without the treading and Emacs saves 
the password it will work inside the thread too I think because there 
will be no need for user-interaction

Regards
Christian

On 2018-10-24 12:53, Alan Third wrote:
> On Wed, Oct 24, 2018 at 12:15:22PM +0200, Christian Johansson wrote:
>> Hi!
>>
>> I am able to reproduce this on two different computers using macOS 10.14 but
>> I haven't tested this on any other system.
>>
>> Steps to reproduce:
>> 1. Open Emacs without any configuration: src/emacs -Q
>> 2. Make sure you are in *scratch* buffer
>> 3. Paste following Emacs Lisp code:
>>
>> ;; FTP URL: ftp.dlptest.com or ftp://ftp.dlptest.com/
>> ;; FTP User: [email-masked]
>> ;; Password: e73jzTRTNqCN9PYAAjjn
>> (make-thread (lambda()
>>                 (message "Listing directory files..")
>>                 (let ((files (directory-files
>> "/ftp:[email-masked]@ftp.dlptest.com:/")))
>>                   (message "Opened directory")
>>                   (message "Directory files: %s" files))))
>>
>> 4. Run M-x eval-buffer
>> 5. Emacs asks for FTP password, paste in mini-buffer: e73jzTRTNqCN9PYAAjjn
>> 6. Emacs now hangs, asks for password again and you can't stop it using C-g.
>> You get error in terminal:
> The NS port currently doesn’t handle interactive functions from
> threads very well. I suspect the problem is being caused by displaying
> a message from the background thread.
>
>> Christians-Air:emacs christianjohansson$ src/emacs -Q
>> 2018-10-24 12:07:58.383 emacs[627:14815] Failed to initialize color list
>> unarchiver: Error Domain=NSCocoaErrorDomain Code=4864 "***
>> -[NSKeyedUnarchiver _initForReadingFromData:error:throwLegacyExceptions:]:
>> non-keyed archive cannot be decoded by NSKeyedUnarchiver"
>> UserInfo={NSDebugDescription=*** -[NSKeyedUnarchiver
>> _initForReadingFromData:error:throwLegacyExceptions:]: non-keyed archive
>> cannot be decoded by NSKeyedUnarchiver}
> This error will be fixed in Emacs 26.2.
>
>> 2018-10-24 12:08:28.515 emacs[627:15311] WARNING: NSWindow drag regions
>> should only be invalidated on the Main Thread! This will throw an exception
>> in the future. Called from (
>>      0   AppKit                              0x00007fff334132e3
>> -[NSWindow(NSWindow_Theme)
>> _postWindowNeedsToResetDragMarginsUnlessPostingDisabled] + 386
>>      1   AppKit                              0x00007fff33435422
>> -[NSThemeFrame _tileTitlebarAndRedisplay:] + 98
>>      2   AppKit                              0x00007fff334604dd
>> -[NSTitledFrame _titleDidChange] + 217
>>      3   AppKit                              0x00007fff3345ff89
>> -[NSTitledFrame setTitle:] + 730
>>      4   AppKit                              0x00007fff3345fc00
>> -[NSThemeFrame setTitle:] + 50
>>      5   AppKit                              0x00007fff33423082 -[NSWindow
>> _dosetTitle:andDefeatWrap:] + 211
>>      6   emacs                               0x00000001001e7371
>> ns_set_name_internal + 161
>>      7   emacs                               0x000000010004f640
>> x_consider_frame_title + 784
>>      8   emacs                               0x0000000100028ad5
>> redisplay_internal + 2949
> <snip>
>>      73  emacs                               0x00000001001b624a run_thread +
>> 138
>>      74  libsystem_pthread.dylib             0x00007fff6316d33d _pthread_body
>> + 126
>>      75  libsystem_pthread.dylib             0x00007fff631702a7
>> _pthread_start + 70
>>      76  libsystem_pthread.dylib             0x00007fff6316c425 thread_start
>> + 13
>> )
> Yes, we can see redisplay is being called from within the thread, and
> that just won’t work currently, I’m afraid.