CygWin / Sshd / ssh-keygen hangs

Cezar Damian cezar.damian@yahoo.com
Mon May 4 09:39:19 GMT 2020


HI,

 

When trying to run ssh-keygen or sshd from Cygwin bashboth of them are hanging.

 

Wehave the following configuration :
   
   - CygWin – latest version
   - Openssh – latest available version
   - OS – W10 running in a VMWare environment

 

When attaching with gdb to the process, I can see thatssh-keygen threads are waiting for something ( see below ) and the program isblocked in pthread_setspecific ().

 

Do you have any idea what is causing such a behaviorand how can we:
   
   - Work around it
   - Understand what causes it ?

 

Thank you,

 

Cezar Damian

 

 

 

(gdb) info threads

  Id   TargetId           Frame

  1    Thread 14616.0x2ccc0x00007ffa62e30154 in ntdll!ZwWaitForSingleObject () from/cygdrive/c/Windows/SYSTEM32/ntdll.dll

  2    Thread 14616.0x3d0c0x00007ffa62e339e4 in ntdll!ZwWaitForWorkViaWorkerFactory () from/cygdrive/c/Windows/SYSTEM32/ntdll.dll

  3    Thread 14616.0x12c40x00007ffa62e339e4 in ntdll!ZwWaitForWorkViaWorkerFactory () from/cygdrive/c/Windows/SYSTEM32/ntdll.dll

  4    Thread 14616.0x32ac0x00007ffa62e339e4 in ntdll!ZwWaitForWorkViaWorkerFactory () from/cygdrive/c/Windows/SYSTEM32/ntdll.dll

* 5    Thread 14616.0x33040x0000000000000000 in ?? ()

  6    Thread 14616.0x38a80x00007ffa62e30194 in ntdll!ZwReadFile () from /cygdrive/c/Windows/SYSTEM32/ntdll.dll

  7    Thread 14616.0x8f0 0x00007ffa62e30c24 in ntdll!ZwWaitForMultipleObjects () from/cygdrive/c/Windows/SYSTEM32/ntdll.dll

  8    Thread 14616.0x3d540x00007ffa62e30c24 in ntdll!ZwWaitForMultipleObjects () from /cygdrive/c/Windows/SYSTEM32/ntdll.dll

  9    Thread 14616.0x1ab40x00007ffa62dbec08 in ntdll!LdrShutdownThread () from/cygdrive/c/Windows/SYSTEM32/ntdll.dll

 

(gdb) backtrace full

#0  0x0000000000000000 in ?? ()

No symbol table info available.

#1  0x0000000180163eb0 in pthread_setspecific ()at /usr/src/debug/cygwin-3.1.4-1/winsup/cygwin/thread.cc:2858

       pthread_key::keys = {mx = {lock_counter = 0, win32_obj_id = 0xcc}, head =0x800064fb0}

        pthread_rwlock::rwlocks= {mx = {lock_counter = 0, win32_obj_id = 0xc8}, head = 0x8000659a0}

       pthread::threads = {mx = {lock_counter = 0, win32_obj_id = 0xbc}, head =0x800000010}

       pthread_mutex::mutex_initialization_lock = {lock_counter = 0, win32_obj_id =0x254}

       pthread_null::_instance = {<pthread> = {<verifyable_object> = {

             _vptr.verifyable_object = 0x1802bdea0 <vtable for pthread_null+16>, magic= 0}, win32_obj_id = 0x0,

           attr = {<verifyable_object> = {_vptr.verifyable_object =0x1802bde60 <vtable for pthread_attr+16>, magic = 3742232648},

             joinable = 1, contentionscope = 0, inheritsched = 0, schedparam ={sched_priority = 0}, stackaddr = 0x0, stacksize = 0,

             guardsize= 12288, name = 0x0}, function = 0x0, arg = 0x0, return_ptr = 0x0, valid =false, suspended = false,

           canceled = false, cancelstate = 0, canceltype = 0, cygtls = 0x0, cancel_event =0x0, joiner = 0x0, next = 0x0,

           static threads = {mx = {lock_counter = 0, win32_obj_id =0xbc}, head = 0x800000010}, thread_id = 0, cleanup_stack = 0x0,

           mutex = {<verifyable_object> = {_vptr.verifyable_object = 0x1802bed20<vtable for pthread_mutex+16>, magic = 3742232646},

             next = 0x0, lock_counter = 0, win32_obj_id = 0xd8, owner = 0x1, static_new_mutex = 0x1, static _unlocked_mutex = 0x2,

             static _destroyed_mutex = 0x3, recursion_counter = 0, condwaits = 0, type = 2,pshared = 0, static mutexes = {mx = {

                 lock_counter = 0, win32_obj_id = 0xd0}, head = 0x800065b38}, staticmutex_initialization_lock = {lock_counter = 0,

               win32_obj_id = 0x254}}, parent_sigmask = 0}, static _instance ={<pthread> = {<verifyable_object> = {

               _vptr.verifyable_object = 0x1802bdea0 <vtable for pthread_null+16>, magic= 0}, win32_obj_id = 0x0,

             attr = {<verifyable_object> = {_vptr.verifyable_object = 0x1802bde60<vtable for pthread_attr+16>, magic = 3742232648},

               joinable= 1, contentionscope = 0, inheritsched = 0, schedparam = {sched_priority = 0},stackaddr = 0x0,

               stacksize = 0, guardsize = 12288, name = 0x0}, function = 0x0, arg = 0x0,return_ptr = 0x0, valid = false,

             suspended = false, canceled = false, cancelstate = 0, canceltype = 0, cygtls =0x0, cancel_event = 0x0, joiner = 0x0,

             next = 0x0, static threads = {mx = {lock_counter = 0, win32_obj_id = 0xbc},head = 0x800000010}, thread_id = 0,

             cleanup_stack = 0x0, mutex = {<verifyable_object> = {

                 _vptr.verifyable_object = 0x1802bed20 <vtable for pthread_mutex+16>,magic = 3742232646}, next = 0x0,

               lock_counter = 0, win32_obj_id = 0xd8, owner = 0x1, static _new_mutex = 0x1,static _unlocked_mutex = 0x2,

               static _destroyed_mutex = 0x3, recursion_counter = 0, condwaits = 0, type = 2,pshared = 0, static mutexes = {mx = {

                   lock_counter = 0, win32_obj_id = 0xd0}, head = 0x800065b38}, staticmutex_initialization_lock = {

                 lock_counter = 0, win32_obj_id = 0x254}}, parent_sigmask = 0},

           static _instance = <same as static member of an already seen type>}}

       pthread_rwlock::rwlock_initialization_lock = {lock_counter = 0, win32_obj_id =0x108}

       semaphore::semaphores = {mx = {lock_counter = 0, win32_obj_id = 0xd4}, head =0x0}

       pthread_cond::conds = {mx = {lock_counter = 0, win32_obj_id = 0xc4}, head =0x800065ad0}

       pthread_cond::cond_initialization_lock = {lock_counter = 0, win32_obj_id =0x104}

--Type <RET> for more, q to quit, c to continuewithout paging--

       pthread_mutex::mutexes = {mx = {lock_counter = 0, win32_obj_id = 0xd0}, head =0x800065b38}

Backtrace stopped: Cannot access memory at address 0x0

(gdb)



More information about the Cygwin mailing list