After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 341261 - Loading a large number of keys causes properties to be unresponsive
Loading a large number of keys causes properties to be unresponsive
Status: RESOLVED FIXED
Product: seahorse
Classification: Applications
Component: general
git master
Other Linux
: Normal normal
: 1.0.0
Assigned To: Seahorse Maintainer
Seahorse Maintainer
Depends on:
Blocks:
 
 
Reported: 2006-05-10 14:12 UTC by Adam Schreiber
Modified: 2006-05-16 17:25 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Adam Schreiber 2006-05-10 14:12:04 UTC
When unselecting the "Only view signatures of people I trust" option on the properties page for a key containing a large number of signatures that you don't have keys for, seahorse hangs.  For example Werner Koch's key, 0x5B0358A2.  I'll let it run and see if it eventually unfreezes, but at the moment it appears to make the entire application unresponsive.
Comment 1 Stef Walter 2006-05-16 15:18:29 UTC
Could you break in with a debugger and see where it's hanging? 

There was a hanging problem (which Albrecht Dres noted) that had to do with DNS, but I'm guessing this is another one. 
Comment 2 Adam Schreiber 2006-05-16 15:37:31 UTC
gdb outputs the following after a ctrl-c where the window hangs

[transfer] export progress: 1.000000
[transfer] export done
[transfer] starting import
Detaching after fork from child process 9753.

Program received signal SIGINT, Interrupt.

Thread NaN (LWP 9734)

  • #0 ___newselect_nocancel
    from /lib/tls/libc.so.6
  • #1 ??
    from /usr/lib/libgpgme.so.11
  • #2 ??
  • #3 ??
  • #4 ??
  • #5 ??
  • #6 ??
  • #7 ??
  • #8 ??
  • #9 ??
    from /usr/lib/libgpgme.so.11
  • #10 ??
  • #11 ??
  • #12 ??
  • #13 gpgme_get_engine_info
    from /usr/lib/libgpgme.so.11
  • #14 gpgme_get_engine_info
    from /usr/lib/libgpgme.so.11
  • #15 gpgme_wait
    from /usr/lib/libgpgme.so.11
  • #16 gpgme_wait
    from /usr/lib/libgpgme.so.11
  • #17 gpgme_op_import
    from /usr/lib/libgpgme.so.11
  • #18 seahorse_pgp_source_import
    at seahorse-pgp-source.c line 855
  • #19 seahorse_key_source_import
    at seahorse-key-source.c line 178
  • #20 export_done

Comment 3 Adam Schreiber 2006-05-16 15:38:50 UTC
gdb outputs the following after a ctrl-c where the window hangs

[transfer] export progress: 1.000000
[transfer] export done
[transfer] starting import
Detaching after fork from child process 9753.

Program received signal SIGINT, Interrupt.

Thread NaN (LWP 9734)

  • #0 ___newselect_nocancel
    from /lib/tls/libc.so.6
  • #1 ??
    from /usr/lib/libgpgme.so.11
  • #2 ??
  • #3 ??
  • #4 ??
  • #5 ??
  • #6 ??
  • #7 ??
  • #8 ??
  • #9 ??
    from /usr/lib/libgpgme.so.11
  • #10 ??
  • #11 ??
  • #12 ??
  • #13 gpgme_get_engine_info
    from /usr/lib/libgpgme.so.11
  • #14 gpgme_get_engine_info
    from /usr/lib/libgpgme.so.11
  • #15 gpgme_wait
    from /usr/lib/libgpgme.so.11
  • #16 gpgme_wait
    from /usr/lib/libgpgme.so.11
  • #17 gpgme_op_import
    from /usr/lib/libgpgme.so.11
  • #18 seahorse_pgp_source_import
    at seahorse-pgp-source.c line 855
  • #19 seahorse_key_source_import
    at seahorse-key-source.c line 178
  • #20 export_done
    at seahorse-transfer-operation.c line 202
  • #21 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0

Comment 4 Stef Walter 2006-05-16 16:35:40 UTC
Thanks. Committed a fix.

The import and export operations in seahorse-pgp-source.c were synchronous. So this was blocking. With the new SeahorsePGPOperation class it was easy to make these async. 

Comment 5 Adam Schreiber 2006-05-16 16:43:29 UTC
Now, the window is responsive but a crash occurs:

gdb output:

[transfer] export progress: 1.000000
[transfer] export done
[transfer] starting import
Detaching after fork from child process 29976.

Program received signal SIGSEGV, Segmentation fault.

Thread NaN (LWP 29955)

  • #0 ??
  • #1 main_arena
    from /lib/tls/libc.so.6
  • #2 gpgme_data_read
    from /usr/lib/libgpgme.so.11

Comment 6 Stef Walter 2006-05-16 17:25:10 UTC
Good catch. I was wondering earlier about whether gpgme somehow refs the data while it's importing it asynchronously. It turns out that it doesn't. So we have to keep it around. 

Committed fix.