[pkg-gnupg-maint] Bug#932235: gnupg: Stucks in CPU busy loop when started from torbrowser-launcher

vi0oss vi0oss at gmail.com
Tue Jul 16 20:35:28 BST 2019


Package: gnupg
Version: 2.2.12-1
Severity: normal

-- System Information:
Debian Release: 10.0
   APT prefers stable
   APT policy: (900, 'stable'), (10, 'stable-debug'), (10, 
'oldstable-debug'), (10, 'oldoldstable'), (10, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.19.18-64+ (SMP w/4 CPU cores; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: sysvinit (via /sbin/init)

Versions of packages gnupg depends on:
ii  dirmngr         2.2.12-1
ii  gnupg-l10n      2.2.12-1
ii  gnupg-utils     2.2.12-1
ii  gpg             2.2.12-1
ii  gpg-agent       2.2.12-1
ii  gpg-wks-client  2.2.12-1
ii  gpg-wks-server  2.2.12-1
ii  gpgsm           2.2.12-1
ii  gpgv            2.2.12-1

gnupg recommends no packages.

Versions of packages gnupg suggests:
pn  parcimonie  <none>
ii  xloadimage  4.1-25

-- no debconf information

-- Description

I noticed torbrowser-launcher gets stuck on startup. Actually it was 
stuck in /usr/bin/gpg.

The problem is consistently reproducible.

Command line:

/usr/bin/gpg --status-fd 2 --homedir 
/home/torbrowser/.local/share/torbrowser/gnupg_homedir --keyserver 
hkps://hkps.pool.sks-keyservers.net --keyserver-options ca-cert-
file /usr/share/torbrowser-launcher/sks-keyservers.netCA.pem 
include-revoked no-honor-keyserver-url no-honor-pka-record --refresh-keys

Backtrace

#0  0x0000562cd88cfc2e in add_kbnode (root=root at entry=0x562cdcdc1ce0, 
node=node at entry=0x562ce050bce0) at ../../g10/kbnode.c:147
         n1 = 0x562cdfe75360
#1  0x0000562cd88cd27c in keyring_get_keyblock (hd=0x562cdcd90e10, 
ret_kb=ret_kb at entry=0x7fff4d17cb40) at ../../g10/keyring.c:480
         pkt = 0x562ce050bb20
         parsectx = {inp = 0x562cdcd90bf0, last_pkt = {pkttype = 
PKT_SIGNATURE, pkt = {generic = 0x562ce050bb40, symkey_enc = 
0x562ce050bb40, pubkey_enc = 0x562ce050bb40, onepass_sig = 
0x562ce050bb40, signature = 0x562ce050bb40, public_key = 0x562ce050bb40, 
secret_key = 0x562ce050bb40, comment = 0x562ce050bb40, user_id = 
0x562ce050bb40, compressed = 0x562ce050bb40, encrypted = 0x562ce050bb40, 
mdc = 0x562ce050bb40, plaintext = 0x562ce050bb40, gpg_control = 
0x562ce050bb40}}, free_last_pkt = 0, skip_meta = 0, n_parsed_packets = 
223025}
         rc = <optimized out>
         keyblock = 0x562cdcdc1ce0
         node = 0x562ce050bce0
         lastnode = 0x562ce050bce0
         a = 0x562cdcd90bf0
         in_cert = 1
         pk_no = 1
         uid_no = 1
         save_mode = 0
#2  0x0000562cd88cb004 in keydb_get_keyblock (hd=0x562cdcde0640, 
ret_kb=ret_kb at entry=0x7fff4d17cb40) at ../../g10/keydb.c:1403
         err = 0
#3  0x0000562cd88c5a5c in lookup (ctrl=ctrl at entry=0x562cd9074e50, 
ctx=ctx at entry=0x7fff4d17cba0, want_secret=want_secret at entry=0, 
ret_keyblock=ret_keyblock at entry=0x7fff4d17cb90, 
ret_found_key=ret_found_key at entry=0x7fff4d17cb98) at ../../g10/getkey.c:3678
         rc = 0
         no_suitable_key = 0
         keyblock = 0x0
         found_key = 0x0
         infoflags = 1897227711
         __FUNCTION__ = "lookup"
#4  0x0000562cd88c840d in get_pubkey_byfprint 
(ctrl=ctrl at entry=0x562cd9074e50, pk=pk at entry=0x0, 
r_keyblock=r_keyblock at entry=0x0, fprint=fprint at entry=0x7fff4d17cd90 
"\357n(mڅ\352*K\247\336hN,n\207\223)\202\220,V", 
fprint_len=fprint_len at entry=20) at ../../g10/getkey.c:1678
         ctx = {exact = 1, want_secret = 0, req_usage = 0, kr_handle = 
0x562cdcde0640, not_allocated = 1, extra_list = 0x0, found_via_akl = 0, 
nitems = 1, items = {{mode = KEYDB_SEARCH_MODE_FPR20, skipfnc = 0x0, 
skipfncvalue = 0x0, sn = 0x0, snlen = 0, u = {name = 0x2aea85da6d286eef 
<error: Cannot access memory at address 0x2aea85da6d286eef>, fpr = 
"\357n(mڅ\352*K\247\336hN,n\207\223)\202\220\000\000\000", kid = 
{1831366383, 720012762}, grip = 
"\357n(mڅ\352*K\247\336hN,n\207\223)\202\220"}, exact = 0}}}
         kb = 0x0
         found_key = 0x0
         rc = <optimized out>
#5  0x0000562cd88c8d47 in get_pubkey_byfprint (fprint_len=20, 
fprint=0x7fff4d17cd90 "\357n(mڅ\352*K\247\336hN,n\207\223)\202\220,V", 
r_keyblock=0x0, pk=0x0, ctrl=0x562cd9074e50) at ../../g10/getkey.c:1657
         rc = <optimized out>
         rc = <optimized out>
         ctx = <optimized out>
         kb = <optimized out>
         found_key = <optimized out>
#6  get_user_id_byfpr (ctrl=ctrl at entry=0x562cd9074e50, 
fpr=fpr at entry=0x7fff4d17cd90 
"\357n(mڅ\352*K\247\336hN,n\207\223)\202\220,V", 
rn=rn at entry=0x7fff4d17cc90) at ../../g10/getkey.c:4124
         r = 0x0
         p = <optimized out>
         pass = <optimized out>
#7  0x0000562cd88c8d8e in get_user_id_byfpr_native 
(ctrl=ctrl at entry=0x562cd9074e50, fpr=fpr at entry=0x7fff4d17cd90 
"\357n(mڅ\352*K\247\336hN,n\207\223)\202\220,V") at ../../g10/getkey.c:4137
         rn = 0
         p = <optimized out>
         p2 = <optimized out>
#8  0x0000562cd890332c in import_one (ctrl=ctrl at entry=0x562cd9074e50, 
keyblock=<optimized out>, stats=stats at entry=0x562cd90c4970, 
fpr=fpr at entry=0x0, fpr_len=fpr_len at entry=0x0, options=<optimized out>, 
options at entry=2198, from_sk=0, silent=<optimized out>, 
screener=0x562cd89148f0 <keyserver_retrieval_screener>, 
screener_arg=0x7fff4d17d170, origin=1, url=0x562cd9082fe0 
"https://209.244.105.201:443") at ../../g10/import.c:2026
         p = <optimized out>
         n_uids = <optimized out>
         n_subk = <optimized out>
         n_sigs_cleaned = 0
         curtime = 1563303832
         n_sigs = 121038
         n_uids_cleaned = 0
         err = 0
         pk = <optimized out>
         node = <optimized out>
         uidnode = <optimized out>
         keyblock_orig = 0x562cdca41ee0
         fpr2 = "\357n(mڅ\352*K\247\336hN,n\207\223)\202\220"
         fpr2len = 20
         keyid = {1311534727, 2468971152}
         new_key = 0
         mod_key = 1
         same_key = 0
         non_self = 1
         an = <optimized out>
         pkstrbuf = 
"\000\000\000\000\000\000\000\000K\344\217\330,V\000\000\000\000\000\000\000\000\000\000PG\f\331,V\000"
         merge_keys_done = <optimized out>
         any_filter = <optimized out>
         hd = 0x0
         __FUNCTION__ = "import_one"
#9  0x0000562cd89043da in import (ctrl=ctrl at entry=0x562cd9074e50, 
inp=inp at entry=0x562cd90c4750, fname=fname at entry=0x562cd896a988 
"[stream]", stats=stats at entry=0x562cd90c4970, fpr=fpr at entry=0x0, 
fpr_len=fpr_len at entry=0x0, options=2198, screener=0x562cd89148f0 
<keyserver_retrieval_screener>, screener_arg=0x7fff4d17d170, origin=1, 
url=0x562cd9082fe0 "https://209.244.105.201:443") at ../../g10/import.c:585
         pending_pkt = 0x0
         keyblock = 0x562cd913a2a0
         rc = 0
         v3keys = 0
#10 0x0000562cd89055eb in import_keys_internal 
(ctrl=ctrl at entry=0x562cd9074e50, inp=inp at entry=0x562cd90c4750, 
fnames=fnames at entry=0x0, nnames=nnames at entry=0, 
stats_handle=stats_handle at entry=0x562cd90c4970, fpr=fpr at entry=0x0, 
fpr_len=0x0, options=2198, screener=0x562cd89148f0 
<keyserver_retrieval_screener>, screener_arg=0x7fff4d17d170, origin=1, 
url=0x562cd9082fe0 "https://209.244.105.201:443") at ../../g10/import.c:457
         i = <optimized out>
         err = 0
         stats = 0x562cd90c4970
#11 0x0000562cd89058b3 in import_keys_es_stream 
(ctrl=ctrl at entry=0x562cd9074e50, fp=<optimized out>, 
stats_handle=stats_handle at entry=0x562cd90c4970, fpr=fpr at entry=0x0, 
fpr_len=fpr_len at entry=0x0, options=2198, screener=0x562cd89148f0 
<keyserver_retrieval_screener>, screener_arg=0x7fff4d17d170, origin=1, 
url=0x562cd9082fe0 "https://209.244.105.201:443") at ../../g10/import.c:546
         err = <optimized out>
         inp = 0x562cd90c4750
#12 0x0000562cd8914f3a in keyserver_get_chunk (r_fprlen=0x0, r_fpr=0x0, 
quick=0, override_keyserver=0x0, stats_handle=0x562cd90c4970, 
r_ndesc_used=<synthetic pointer>, ndesc=2, desc=0x562cd907d650, 
ctrl=0x562cd9074e50) at ../../g10/keyserver.c:1752
         screenerarg = {desc = 0x562cd907d650, ndesc = 2}
         err = 0
         datastream = 0x562cd9084470
         source = 0x562cd9082fe0 "https://209.244.105.201:443"
         linelen = <optimized out>
         only_fprs = <optimized out>
         n = <optimized out>
         pattern = 0x562cd90c10c0
         idx = <optimized out>
         npat = <optimized out>
         npat_fpr = <optimized out>
         err = <optimized out>
         pattern = <optimized out>
         idx = <optimized out>
         npat = <optimized out>
         npat_fpr = <optimized out>
         datastream = <optimized out>
         source = <optimized out>
         linelen = <optimized out>
         n = <optimized out>
         only_fprs = <optimized out>
         __FUNCTION__ = "keyserver_get_chunk"
         quiet = <optimized out>
         screenerarg = <optimized out>
#13 keyserver_get (ctrl=ctrl at entry=0x562cd9074e50, 
desc=desc at entry=0x562cd907d650, ndesc=ndesc at entry=2, 
override_keyserver=override_keyserver at entry=0x0, quick=quick at entry=0, 
r_fpr=r_fpr at entry=0x0, r_fprlen=0x0) at ../../g10/keyserver.c:1787
         err = <optimized out>
         stats_handle = 0x562cd90c4970
         ndesc_used = <optimized out>
         any_good = 0
#14 0x0000562cd89171ba in keyserver_refresh (ctrl=0x562cd9074e50, 
users=<optimized out>) at ../../g10/keyserver.c:1462
         tmpuri = 0x562cd9082fe0 "https://209.244.105.201:443"
         err = 0
         count = 2
         numdesc = <optimized out>
         fakev3 = <optimized out>
         desc = 0x562cd907d650
         options = 2050
#15 0x0000562cd88aedc9 in main (argc=<optimized out>, argv=<optimized 
out>) at ../../g10/gpg.c:4655
         pargs = {argc = 0x7fff4d17d36c, argv = 0x7fff4d17d360, flags = 
32769, err = 0, r_opt = 0, r_type = 0, r = {ret_int = 0, ret_long = 0, 
ret_ulong = 0, ret_str = 0x0}, internal = {idx = 10, inarg = 0, stopped 
= 0, last = 0x7fff4d17e63a "--refresh-keys", aliases = 0x0, cur_alias = 
0x0, iio_list = 0x0}}
         a = <optimized out>
         rc = 0
         orig_argc = <optimized out>
         orig_argv = <optimized out>
         fname = <optimized out>
         username = <optimized out>
         may_coredump = 0
         sl = 0x0
         remusr = 0x0
         locusr = 0x0
         nrings = 0x0
         afx = 0x0
         detached_sig = 0
         configfp = <optimized out>
         configname = 0x0
         save_configname = <optimized out>
         default_configname = 0x562cd9074db0 "\240\224\a\331,V"
         configlineno = 0
         parse_debug = 0
         default_config = 0
         default_keyring = 1
         greeting = 0
         nogreeting = 0
         logfile = 0x0
         use_random_seed = 1
         cmd = aRefreshKeys
         debug_level = <optimized out>
         trustdb_name = 0x0
         def_cipher_string = <optimized out>
         def_digest_string = <optimized out>
         compress_algo_string = <optimized out>
         cert_digest_string = <optimized out>
         s2k_cipher_string = <optimized out>
         s2k_digest_string = <optimized out>
         pers_cipher_list = 0x0
         pers_digest_list = 0x0
         pers_compress_list = 0x0
         eyes_only = 0
         multifile = 0
         pwfd = -1
         ovrseskeyfd = -1
         fpr_maybe_cmd = 0
         any_explicit_recipient = 0
         default_akl = 1
         require_secmem = 0
         got_secmem = 1
         malloc_hooks = {malloc = 0x7f6aec2f76d0 <gcry_malloc>, realloc 
= 0x7f6aec2f7710 <gcry_realloc>, free = 0x7f6aec2f7790 <gcry_free>}
         ctrl = 0x562cd9074e50
         print_dane_records = 0
         print_pka_records = 0
         __FUNCTION__ = <optimized out>

Another backtrace:

#0  0x00005599224fec2e in add_kbnode (root=root at entry=0x559922bdbc90, 
node=node at entry=0x55992470e6e0) at ../../g10/kbnode.c:147
         n1 = 0x55992327ce90
#1  0x00005599224fc27c in keyring_get_keyblock (hd=0x559922be66b0, 
ret_kb=ret_kb at entry=0x7fff1cedf5d8) at ../../g10/keyring.c:480
         pkt = 0x55992470e520
         parsectx = {inp = 0x559922be8dc0, last_pkt = {pkttype = 
PKT_SIGNATURE, pkt = {generic = 0x55992470e540,
               symkey_enc = 0x55992470e540, pubkey_enc = 0x55992470e540, 
onepass_sig = 0x55992470e540, signature = 0x55992470e540,
               public_key = 0x55992470e540, secret_key = 0x55992470e540, 
comment = 0x55992470e540, user_id = 0x55992470e540,
               compressed = 0x55992470e540, encrypted = 0x55992470e540, 
mdc = 0x55992470e540, plaintext = 0x55992470e540,
               gpg_control = 0x55992470e540}}, free_last_pkt = 0, 
skip_meta = 0, n_parsed_packets = 114439}
         rc = <optimized out>
         keyblock = 0x559922bdbc90
         node = 0x55992470e6e0
         lastnode = 0x55992470e6e0
         a = 0x559922be8dc0
         in_cert = 1
         pk_no = 1
         uid_no = 1
         save_mode = 0
#2  0x00005599224fa004 in keydb_get_keyblock 
(hd=hd at entry=0x559922be6280, ret_kb=ret_kb at entry=0x7fff1cedf5d8)
     at ../../g10/keydb.c:1403
         err = 0
#3  0x0000559922545fa6 in keyidlist (fakev3=0, count=<synthetic 
pointer>, klist=<synthetic pointer>, users=0x0, ctrl=0x559922bdbe50)
     at ../../g10/keyserver.c:1259
         keyblock = 0x0
         node = <optimized out>
         kdbhd = <optimized out>
         ndesc = <optimized out>
         rc = <optimized out>
         num = 100
         desc = 0x559922bdbdb0
         sl = <optimized out>
         rc = <optimized out>
         num = <optimized out>
         keyblock = <optimized out>
         node = <optimized out>
         kdbhd = <optimized out>
--Type <RET> for more, q to quit, c to continue without paging--c
         ndesc = <optimized out>
         desc = <optimized out>
         sl = <optimized out>
         err = <optimized out>
         dummy = <optimized out>
         uid = <optimized out>
         sig = <optimized out>
#4  keyserver_refresh (ctrl=0x559922bdbe50, users=0x0) at 
../../g10/keyserver.c:1406
         err = <optimized out>
         count = <optimized out>
         numdesc = <optimized out>
         fakev3 = 0
         desc = 0x559922be4650
         options = 2050
#5  0x00005599224dddc9 in main (argc=<optimized out>, argv=<optimized 
out>) at ../../g10/gpg.c:4655
         pargs = {argc = 0x7fff1cedf71c, argv = 0x7fff1cedf710, flags = 
32769, err = 0, r_opt = 0, r_type = 0, r = {ret_int = 0, ret_long = 0, 
ret_ulong = 0, ret_str = 0x0}, internal = {idx = 8, inarg = 0, stopped = 
0, last = 0x7fff1cee063a "--refresh-keys", aliases = 0x0, cur_alias = 
0x0, iio_list = 0x0}}
         a = <optimized out>
         rc = 0
         orig_argc = <optimized out>
         orig_argv = <optimized out>
         fname = <optimized out>
         username = <optimized out>
         may_coredump = 0
         sl = 0x0
         remusr = 0x0
         locusr = 0x0
         nrings = 0x0
         afx = 0x0
         detached_sig = 0
         configfp = <optimized out>
         configname = 0x0
         save_configname = <optimized out>
         default_configname = 0x559922bdbdb0 "\022"
         configlineno = 0
         parse_debug = 0
         default_config = 0
         default_keyring = 1
         greeting = 0
         nogreeting = 0
         logfile = 0x0
         use_random_seed = 1
         cmd = aRefreshKeys
         debug_level = <optimized out>
         trustdb_name = 0x0
         def_cipher_string = <optimized out>
         def_digest_string = <optimized out>
         compress_algo_string = <optimized out>
         cert_digest_string = <optimized out>
         s2k_cipher_string = <optimized out>
         s2k_digest_string = <optimized out>
         pers_cipher_list = 0x0
         pers_digest_list = 0x0
         pers_compress_list = 0x0
         eyes_only = 0
         multifile = 0
         pwfd = -1
         ovrseskeyfd = -1
         fpr_maybe_cmd = 0
         any_explicit_recipient = 0
         default_akl = 1
         require_secmem = 0
         got_secmem = 1
         malloc_hooks = {malloc = 0x7faee32526d0 <gcry_malloc>, realloc 
= 0x7faee3252710 <gcry_realloc>, free = 0x7faee3252790 <gcry_free>}
         ctrl = 0x559922bdbe50
         print_dane_records = 0
         print_pka_records = 0
         __FUNCTION__ = <optimized out>



More information about the pkg-gnupg-maint mailing list