Opened 4 years ago

Closed 4 years ago

#7107 closed defect (fixed)

IRC transport problems will cause to Gajim to freak out (please correct the title)

Reported by: Darlan Owned by:
Priority: high Milestone: 0.15
Component: None Version: 0.14.4
Severity: normal Keywords: spam flood WHOIS CCTP IRC transport
Cc: Blocked By:
Blocking: OS: All

Description (last modified by Dicson)

Note: The event described at #7003 is reminiscing the following event.

Ticket #7003:
Gajim consumed 30% to 40% of CPU and~99 MB of RAM
Database might get corrupted.

I believe that the following event can be happen even if you will leave your machine with an IRC chat opened and someone will change the configurations of the channel

Bug description

Not clear.
Gajim will produce a various of Programming Errors while being flooded with WHOIS messages because of problems with the IRC transport itself.

Steps to reproduce

Join to an IRC channel which redirected to another channel: #sip-communicator is set to redirect users to #jitsi
Try to join to: sip-communicator%irc.freenode.org@…

The contact <MY_IRC_NICK>irc.freenode.org@irc.draugr.de will send to you endless WHOIS requests

[09:07:12 PM] <MY_IRC_NICK>!irc.freenode.org: WHOIS: <MY_IRC_NICK> is  ~MyName@jabberd.draugr.de : <MY_IRC_NICK>
[09:07:12 PM] <MY_IRC_NICK>!irc.freenode.org: WHOIS: <MY_IRC_NICK> is on #jitsi 
[09:07:12 PM] <MY_IRC_NICK>!irc.freenode.org: WHOIS: <MY_IRC_NICK> use adams.freenode.net : Budapest, HU, EU
[09:07:12 PM] <MY_IRC_NICK>!irc.freenode.org: End of WHOIS
[09:07:13 PM] <MY_IRC_NICK>!irc.freenode.org: WHOIS: <MY_IRC_NICK> is ~PhilipZur@jabberd.draugr.de : <MY_IRC_NICK>
[09:07:13 PM] <MY_IRC_NICK>!irc.freenode.org: WHOIS: <MY_IRC_NICK> is on #jitsi 
[09:07:13 PM] <MY_IRC_NICK>!irc.freenode.org: WHOIS: <MY_IRC_NICK> use adams.freenode.net : Budapest, HU, EU
[09:07:13 PM] <MY_IRC_NICK>!irc.freenode.org: End of WHOIS

As long as you won't close all the related conversations of irc.draugr.de: You will not be able to logout from your XMPP account. You will get dialogs of A programming error has been detected each time you will do something (select text, try to logout from your XMPP account or other)

Traceback (most recent call last):
  File "/usr/share/gajim/src/roster_window.py", line 2224, in change_status
    change(account, status)
  File "/usr/share/gajim/src/roster_window.py", line 2215, in change
    self.get_status_message(status, on_response)
  File "/usr/share/gajim/src/roster_window.py", line 2201, in get_status_message
    on_response('', empty_pep)
  File "/usr/share/gajim/src/roster_window.py", line 2213, in on_response
    self.send_status(account, status, message)
  File "/usr/share/gajim/src/roster_window.py", line 2010, in send_status
    self.send_status_continue(account, status, txt, auto, to)
  File "/usr/share/gajim/src/roster_window.py", line 2059, in send_status_continue
    gajim.connections[account].change_status(status, txt, auto)
  File "/usr/share/gajim/src/common/connection.py", line 645, in change_status
    self.connection.start_disconnect()
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 318, in start_disconnect
    self.disconnect()
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 459, in disconnect
    NonBlockingTransport.disconnect(self, do_callback)
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 209, in disconnect
    self.on_disconnect()
  File "/usr/share/gajim/src/common/xmpp/client_nb.py", line 133, in disconnect
    i()
  File "/usr/share/gajim/src/common/connection.py", line 232, in _on_disconnected
    self.dispatch('STATUS', 'offline')
  File "/usr/share/gajim/src/common/connection.py", line 177, in dispatch
    gajim.ged.raise_event(event, self.name, data)
  File "/usr/share/gajim/src/common/ged.py", line 67, in raise_event
    handler(*args, **kwargs)
  File "/usr/share/gajim/src/gui_interface.py", line 265, in handle_event_status
    ctrl.parent_win.redraw_tab(ctrl)
  File "/usr/share/gajim/src/message_window.py", line 614, in redraw_tab
    tab_img = ctrl.get_tab_image()
  File "/usr/share/gajim/src/chat_control.py", line 2386, in get_tab_image
    tab_img = img_16[contact.show]
KeyError: '<MY_IRC_NICK>'
Traceback (most recent call last):
  File "/usr/share/gajim/src/common/xmpp/idlequeue.py", line 533, in _process_events
    return IdleQueue._process_events(self, fd, flags)
  File "/usr/share/gajim/src/common/xmpp/idlequeue.py", line 394, in _process_events
    obj.pollin()
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 414, in pollin
    self._do_receive()
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 600, in _do_receive
    self._on_receive(received)
  File "/usr/share/gajim/src/common/xmpp/transports_nb.py", line 614, in _on_receive
    self.on_receive(data)
  File "/usr/share/gajim/src/common/xmpp/dispatcher_nb.py", line 452, in dispatch
    handler['func'](session, stanza)
  File "/usr/share/gajim/src/common/connection_handlers.py", line 674, in _IqCB
    self._getRoster()
  File "/usr/share/gajim/src/common/connection_handlers.py", line 2218, in _getRoster
    self.connection.getRoster(self._on_roster_set)
  File "/usr/share/gajim/src/common/xmpp/roster_nb.py", line 364, in getRoster
    on_ready(self)
  File "/usr/share/gajim/src/common/connection_handlers.py", line 2253, in _on_roster_set
    self._send_first_presence(signed)
  File "/usr/share/gajim/src/common/connection_handlers.py", line 2320, in _send_first_presence
    self.dispatch('STATUS', show)
  File "/usr/share/gajim/src/common/connection.py", line 177, in dispatch
    gajim.ged.raise_event(event, self.name, data)
  File "/usr/share/gajim/src/common/ged.py", line 67, in raise_event
    handler(*args, **kwargs)
  File "/usr/share/gajim/src/gui_interface.py", line 263, in handle_event_status
    ctrl.got_connected()
  File "/usr/share/gajim/src/chat_control.py", line 2929, in got_connected
    self.draw_banner()
  File "/usr/share/gajim/src/chat_control.py", line 159, in draw_banner
    self._update_banner_state_image()
  File "/usr/share/gajim/src/chat_control.py", line 1847, in _update_banner_state_image
    banner_image = img_16[show]
KeyError: '<MY_IRC_NICK>'
Traceback (most recent call last):
  File "/usr/share/gajim/src/message_window.py", line 194, in _on_window_focus
    self.redraw_tab(ctrl)
  File "/usr/share/gajim/src/message_window.py", line 614, in redraw_tab
    tab_img = ctrl.get_tab_image()
  File "/usr/share/gajim/src/chat_control.py", line 2386, in get_tab_image
    tab_img = img_16[contact.show]
KeyError: '<MY_IRC_NICK>'

You have to closed all the related conversation tabs that are related to irc.draugr.de (I have found two Private Message tabs on another workspace)

Tab 1: <MY_IRC_NICK> from zenwalk%irc.freenode.org@irc.draugr.de
 [09:05:47 PM] Error: #sip-communicator #jitsi :Forwarding to another channel
 [09:05:47 PM] Error 500: #sip-communicator #jitsi :Forwarding to another channel
Tab 2: <MY_IRC_NICK> from sip-communicator%irc.freenode.org@irc.draugr.de
 [09:05:46 PM] Error: #sip-communicator #jitsi :Forwarding to another channel
 [09:05:46 PM] Error 500: #sip-communicator #jitsi :Forwarding to another channel

Close these tabs.

If you use 0.14.x then the "Error 500" lines won't appear in the logs due to #6860

Now you will be able to logout from my XMPP account.

Software versions

OS version: Salix OS 13.37 (Slackware 13.37 based)
GTK version: 2.24.4
PyGTK version: 2.22.0

Change History (6)

comment:1 Changed 4 years ago by Darlan

sip-communicator%irc.freenode.org@…
sip-communicator % irc.freenode.org @ irc.draugr.de

comment:2 Changed 4 years ago by Darlan

Edit: You have to closed all the related conversation tabs that are related to irc.draugr.de (I have found two Private Message tabs on another workspace)

Tab 1: <MY_IRC_NICK> from zenwalk%irc.freenode.org@irc.draugr.de
 [09:05:47 PM] Error: #sip-communicator #jitsi :Forwarding to another channel
 [09:05:47 PM] Error 500: #sip-communicator #jitsi :Forwarding to another channel
Tab 2: <MY_IRC_NICK> from sip-communicator%irc.freenode.org@irc.draugr.de
 [09:05:46 PM] Error: #sip-communicator #jitsi :Forwarding to another channel
 [09:05:46 PM] Error 500: #sip-communicator #jitsi :Forwarding to another channel

comment:3 Changed 4 years ago by Dicson

  • Description modified (diff)

comment:4 Changed 4 years ago by Dicson

  • Description modified (diff)

comment:5 Changed 4 years ago by Dicson

  • Description modified (diff)

comment:6 Changed 4 years ago by asterix

  • Milestone set to 0.15
  • Resolution set to fixed
  • Status changed from new to closed

In 0.15 behaviour is different: no traceback, but you're just not logged in the room. Indeed you get presences from the new room, which is not the one you joined. The transport doesn't translate the room forwarding correctly.

Note: You should try latest version before reporting bugs

Note: See TracTickets for help on using tickets.