Ticket #3565 (closed defect: fixed)

Opened 13 months ago

Last modified 13 months ago

Maximum recursion error in gajim

Reported by: lars Owned by: asterix
Priority: high Milestone: 0.12
Component: None Version:
Severity: normal Keywords:
Cc: OS: All

Description

This error is triggered in the latest Gajim version (and the version before). I cannot reproduce when exactly it takes place. Seems randomly.

Traceback (most recent call last):
  File "/usr/share/gajim/src/common/xmpp/idlequeue.py", line 132, in process_events
    obj.pollin()
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 153, in pollin
    self._do_receive() 
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 255, in _do_receive
    self.on_receive(received)
  File "/usr/share/gajim/src/common/xmpp/dispatcher_nb.py", line 353, in dispatch
    handler['func'](session,stanza)
  File "/usr/share/gajim/src/common/connection_handlers.py", line 1807, in _presenceCB
    keyID, timestamp, contact_nickname))
  File "/usr/share/gajim/src/common/connection.py", line 109, in dispatch
    self.put_event((event, data))
  File "/usr/share/gajim/src/common/connection.py", line 105, in put_event
    gajim.handlers[ev[0]](self.name, ev[1])
  File "gajim.py", line 595, in handle_event_notify
    account)
  File "/usr/share/gajim/src/roster_window.py", line 1218, in chg_contact_status
    self.add_contact_to_roster(contact.jid, account)
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
[...]
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 386, in add_contact_to_roster
    self.add_contact_to_roster(data['jid'], data['account'])
  File "/usr/share/gajim/src/roster_window.py", line 324, in add_contact_to_roster
    self.draw_contact(jid, account)
  File "/usr/share/gajim/src/roster_window.py", line 646, in draw_contact
    self.draw_parent_contact(jid, account)
  File "/usr/share/gajim/src/roster_window.py", line 667, in draw_parent_contact
    self.draw_contact(parent_jid, parent_account)
  File "/usr/share/gajim/src/roster_window.py", line 557, in draw_contact
    iters = self.get_contact_iter(jid, account)
  File "/usr/share/gajim/src/roster_window.py", line 92, in get_contact_iter
    if jid == gajim.get_jid_from_account(account):
  File "/usr/share/gajim/src/common/gajim.py", line 289, in get_jid_from_account
    name = config.get_per('accounts', account_name, 'name')
  File "/usr/share/gajim/src/common/config.py", line 536, in get_per
    if not dict.has_key(key):
RuntimeError: maximum recursion depth exceeded in cmp

Attachments

Change History

Changed 13 months ago by asterix

could you please edit usr/share/gajim/src/roster_window.py, line 383, to have something like that:

      self.draw_contact(jid, account)      self.draw_avatar(jid, account)
      # put the children under this iter
      print 'jid', jid
      print 'shown_family', shown_family
      print 'metacontacts', gajim.contacts._metacontacts_tags
      for data in shown_family:
         contacts = gajim.contacts.get_contact(data['account'],
            data['jid']) 
         self.add_contact_to_roster(data['jid'], data['account'])

and send us some lines before the traceback?

Changed 13 months ago by asterix

  • status changed from new to closed
  • resolution set to fixed
  • milestone set to 0.12

(In [9019]) fix metacontact behaviour when 2 contacts in the group have same jid, same priority and same status. fixes #3565

Add/Change #3565 (Maximum recursion error in gajim)

Author



Change Properties
<Author field>
Action
as closed
Next status will be 'reopened'
 
Note: See TracTickets for help on using tickets.