Ticket #1569 (closed defect: wontfix)

Opened 14 months ago

Last modified 14 months ago

Crash while showing gpg pinentry

Reported by: root_42 Owned by:
Priority: normal Milestone: 1.3.5
Component: None Version: devel
Keywords: Cc:

Description

This crash happened when I received a gpg encrypted message and the pinentry dialog was showing.

Attachments

licq.backtrace (1.6 kB) - added by root_42 14 months ago.
licq.backtrace.gdb (10.7 kB) - added by root_42 14 months ago.
licq.debug_rw_mutex (194 bytes) - added by root_42 14 months ago.

Change History

Changed 14 months ago by erijo

  • version set to devel
  • milestone set to 1.3.5

Could you please recompile with debug symbols and try to reproduce the bug.

Changed 14 months ago by root_42

Changed 14 months ago by root_42

Changed 14 months ago by root_42

Changed 14 months ago by root_42

Ok, I have attached backtraces with symbols.

Changed 14 months ago by erijo

  • status changed from new to closed
  • resolution set to wontfix

This is what happens:

  1. When a new messages arrives, the daemon locks the contact's mutex (for writing == exclusive access).
  2. While holding the lock, a new CEventMsg is created.
  3. The CEventMsg's ctor will try to decrypt the message if it is encrypted.
  4. This will block the thread while pinentry asks the user for the password.
  5. If the Qt gui plugin decides to update the gui during this time it will also try to lock the contact's mutex (for reading).
  6. If it can't get the lock within 10 seconds it will abort, thinking that this must surely be a deadlock (even though it, in this case, isn't one).

Similar problems appear if you for example open the history for a contact that contains encrypted messages and simultaneous receive a new message from that contact.

I increased the time before abort to 30 seconds in r5650, but this just means that you have a little more time to enter the password before it crashes.

This bug is simply a conflict between the GPG support and the deadlock detection code. The GPG support will probably not be changed and I very much prefer Licq to crash when there is a deadlock instead of just hanging. Also, deadlock detection will be disabled for 1.3.5 final.

Note: See TracTickets for help on using tickets.