https://bugs.kde.org/show_bug.cgi?id=373374

Jan Kundrát <j...@kde.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |CONFIRMED
     Ever confirmed|0                           |1

--- Comment #2 from Jan Kundrát <j...@kde.org> ---
I'm having lots of fun so far.

I did some debugging and it seems to me that my gpg-agent started deadlocking:

(gdb) t a a bt

Thread 3 (Thread 0x7fcaaffff700 (LWP 23673)):
#0  __lll_lock_wait () at ../sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:135
#1  0x00007fcab5369f65 in __GI___pthread_mutex_lock (mutex=0x7fcab5ecbd08
<pool_lock+8>) at ../nptl/pthread_mutex_lock.c:81
#2  0x0000000000000080 in ?? ()
#3  0x00007fcaa8003aa0 in ?? ()
#4  0x00007fcab60e6a20 in ?? ()
#5  0x00007fcaafffeaf0 in ?? ()
#6  0x00007fcab5c87b7a in _gcry_mpi_randomize (w=0x80, nbits=<optimized out>,
level=<optimized out>)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/mpi/mpiutil.c:655
#7  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7fcab4fb3700 (LWP 23657)):
#0  0x00007fcab536fb8b in futex_abstimed_wait_cancelable (private=0,
abstime=0x0, expected=0, futex_word=0x7fcab5782080 <sceptre_buffer>)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  do_futex_wait (sem=sem@entry=0x7fcab5782080 <sceptre_buffer>, abstime=0x0)
at sem_waitcommon.c:111
#2  0x00007fcab536fc5c in __new_sem_wait_slow (sem=0x7fcab5782080
<sceptre_buffer>, abstime=0x0) at sem_waitcommon.c:181
#3  0x00007fcab536fd0e in __new_sem_wait (sem=<optimized out>) at sem_wait.c:29
#4  0x00007fcab557fdc1 in leave_npth () at
/var/tmp/portage/dev-libs/npth-1.2/work/npth-1.2/src/npth.c:134
#5  0x00007fcab558061c in npth_usleep (usec=<optimized out>) at
/var/tmp/portage/dev-libs/npth-1.2/work/npth-1.2/src/npth.c:497
#6  0x00007fcab5c7e302 in _gcry_rndlinux_gather_random (add=0x7fcab5c794e0
<add_randomness>, origin=RANDOM_ORIGIN_SLOWPOLL, length=90, level=<optimized
out>)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/random/rndlinux.c:205
#7  0x00007fcab5c79092 in read_random_source
(origin=origin@entry=RANDOM_ORIGIN_SLOWPOLL, length=length@entry=120,
level=level@entry=1)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/random/random-csprng.c:1275
#8  0x00007fcab5c7a184 in random_poll () at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/random/random-csprng.c:1101
#9  read_pool (level=0, length=<optimized out>, buffer=0x7fcab5ecc6a4
<nonce_buffer+20> "")
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/random/random-csprng.c:995
#10 _gcry_rngcsprng_randomize (buffer=<optimized out>, length=<optimized out>,
level=GCRY_WEAK_RANDOM)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/random/random-csprng.c:538
#11 0x00007fcab5c78efb in _gcry_randomize (level=GCRY_WEAK_RANDOM, length=8,
buffer=0x7fcab5ecc6a4 <nonce_buffer+20>)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/random/random.c:341
#12 _gcry_create_nonce (buffer=buffer@entry=0x7fcab60e6228,
length=length@entry=128)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/random/random.c:466
#13 0x00007fcab5c87b7a in _gcry_mpi_randomize (w=w@entry=0x7fcab0003ab0,
nbits=nbits@entry=1024, level=level@entry=GCRY_WEAK_RANDOM)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/mpi/mpiutil.c:655
#14 0x00007fcab5c49e2d in secret_blinded (output=0x7fcab0003a90,
input=0x7fcab0001d70, sk=0x7fcab4fb2b90, nbits=1024)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/cipher/rsa.c:1067
#15 0x00007fcab5c4a6d5 in rsa_decrypt (r_plain=0x7fcab4fb2d08,
s_data=<optimized out>, keyparms=0x7fcab0003880)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/cipher/rsa.c:1365
#16 0x00007fcab5bd451f in _gcry_pk_decrypt
(r_plain=r_plain@entry=0x7fcab4fb2d08, s_data=s_data@entry=0x7fcab00030f0,
s_skey=s_skey@entry=0x7fcab00031a0)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/cipher/pubkey.c:377
#17 0x00007fcab5bbe0d6 in gcry_pk_decrypt (result=result@entry=0x7fcab4fb2d08,
data=0x7fcab00030f0, skey=0x7fcab00031a0)
    at
/var/tmp/portage/dev-libs/libgcrypt-1.7.3/work/libgcrypt-1.7.3/src/visibility.c:985
#18 0x000055e5d82880e9 in agent_pkdecrypt (ctrl=ctrl@entry=0x55e5d89c7d60,
desc_text=<optimized out>, ciphertext=0x7fcab0001ed0
"(7:enc-val(3:rsa(1:a129:", 
    ciphertextlen=156, outbuf=outbuf@entry=0x7fcab4fb2d90,
r_padding=r_padding@entry=0x7fcab4fb2d7c) at pkdecrypt.c:109
#19 0x000055e5d8278412 in cmd_pkdecrypt (ctx=0x7fcab00008f0, line=<optimized
out>) at command.c:849
#20 0x00007fcab578c60d in dispatch_command (ctx=0x7fcab00008f0, line=<optimized
out>, linelen=<optimized out>) at assuan-handler.c:675
#21 0x00007fcab578ca7f in process_request (ctx=0x7fcab00008f0) at
assuan-handler.c:871
#22 assuan_process (ctx=0x7fcab00008f0) at assuan-handler.c:894
#23 0x000055e5d827b31b in start_command_handler (ctrl=0x55e5d89c7d60,
listen_fd=<optimized out>, fd=<optimized out>) at command.c:3304
#24 0x000055e5d82730b9 in do_start_connection_thread (ctrl=0x55e5d89c7d60) at
gpg-agent.c:2601
#25 0x00007fcab557febf in thread_start (startup_arg=<optimized out>) at
/var/tmp/portage/dev-libs/npth-1.2/work/npth-1.2/src/npth.c:265
#26 0x00007fcab536764c in start_thread (arg=0x7fcab4fb3700) at
pthread_create.c:334
#27 0x00007fcab50a9b5d in clone () at
../sysdeps/unix/sysv/linux/x86_64/clone.S:109

Thread 1 (Thread 0x7fcab60bf700 (LWP 23656)):
#0  0x00007fcab536fb8b in futex_abstimed_wait_cancelable (private=0,
abstime=0x0, expected=0, futex_word=0x7fcab5782080 <sceptre_buffer>)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:205
#1  do_futex_wait (sem=sem@entry=0x7fcab5782080 <sceptre_buffer>, abstime=0x0)
at sem_waitcommon.c:111
#2  0x00007fcab536fc5c in __new_sem_wait_slow (sem=0x7fcab5782080
<sceptre_buffer>, abstime=0x0) at sem_waitcommon.c:181
#3  0x00007fcab536fd0e in __new_sem_wait (sem=<optimized out>) at sem_wait.c:29
#4  0x00007fcab557fdc1 in leave_npth () at
/var/tmp/portage/dev-libs/npth-1.2/work/npth-1.2/src/npth.c:134
#5  0x00007fcab5580934 in npth_pselect (nfd=<optimized out>,
rfds=0x7ffcf969a020, wfds=0x0, efds=0x0, timeout=0x7ffcf9699e40,
sigmask=0x7fcab5782180 <sigev_unblock>)
    at /var/tmp/portage/dev-libs/npth-1.2/work/npth-1.2/src/npth.c:630
#6  0x000055e5d8274995 in handle_connections (listen_fd=<optimized out>,
listen_fd_extra=<optimized out>, listen_fd_browser=<optimized out>, 
    listen_fd_ssh=<optimized out>) at gpg-agent.c:2848
#7  0x000055e5d8271415 in main (argc=0, argv=0x7ffcf969a440) at
gpg-agent.c:1705


...so I noticed that I can update dev-libs/npth from 1.2 to 1.3, but the test
was still failing (after making sure that I kill all GnuPG Leftovers in between
attempts). I noticed that it doesn't appear to deadlock, though, so I increased
the timeout for gpg-agent to do its job form 10s to 20s, went back to npth 1.2,
and boom, it started working. However, it takes aaaaaaages (12s for that tets
on my system).

If the gpg-agent remains running in between attempts, the subsequent runs
succeed much faster.

Working hypothesis: maybe gpg-agent now needs some extra time for its
first-time init?

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to