Opened 8 years ago

Last modified 5 years ago

#14202 new defect

IRC silently parts channel for no reason and leaves channel window open

Reported by: grank Owned by: elb
Milestone: Component: IRC
Version: 2.7.11 Keywords: irc part cannot send to channel

Description (last modified by grank)

Pidgin is configured to auto-join a channel, in which it sits idle all day...

At some unknown point, I stop receiving any new updates in the channel's window, because it has silently parted the channel in the background.

I'm not sure why it's doing this, but while connected with an external IRC program I can see the nick pidgin is using part. I get no feedback or indication at all in pidgin that this has happened, until I try to send a message to the channel, at which point I get a "Cannot send to channel" box. The connection to the server is alive, and I can close the channel window and open it again without reconnecting and it'll work fine again until the next incident.

I've caught it doing this twice in the debug window, but there isn't much of note. Both times it seems to be doing something with MSN 2 or 3 seconds beforehand, but I don't have any MSN plugins installed or anything peculiar, so I don't think that's related. I'll include it anyway.

(20:40:25) msn: C: NS 000: PNG
(20:40:25) msn: S: NS 000: QNG 47
(20:40:27) accels: accel changed, scheduling save.
(20:40:27) accels: accel changed, scheduling save.
(20:40:27) accels: accel changed, scheduling save.
(20:40:27) accels: accel changed, scheduling save.
(20:40:27) accels: accel changed, scheduling save.
(20:40:28) accels: accel changed, scheduling save.
(20:40:28) accels: accel changed, scheduling save.
(20:40:28) accels: accel changed, scheduling save.
(20:40:28) accels: accel changed, scheduling save.
(20:40:28) accels: accel changed, scheduling save.
(20:40:28) irc: Got a PART on #ents, which doesn't exist -- probably closed
(10:25:28) msn: C: NS 000: PNG
(10:25:28) msn: S: NS 000: QNG 45
(10:25:31) accels: accel changed, scheduling save.
(10:25:31) accels: accel changed, scheduling save.
(10:25:31) accels: accel changed, scheduling save.
(10:25:31) accels: accel changed, scheduling save.
(10:25:31) accels: accel changed, scheduling save.
(10:25:31) irc: Got a PART on #ents, which doesn't exist -- probably closed

This has been happening to me for months and months, since I started using pidgin for IRC, on 2.7.6 and 2.7.10. I just loaded 2.7.11 so I can't yet verify that it's still happening, but I would be surprised if anything had changed. This still happens in 2.7.11 as well.

According to the plugins window, I have the following things checked off:

Buddy List Options 2.6.3

Buddy Notes 2.7.11

Buddy State Notification 2.7.11

Chat User List Logging 2.6.3

Conversation Badger 2.6.3

DiffTopic? 2.6.3

Enhanced History 2.6.3

GtkPrplTwtr? 0.5.2

History 2.7.11

IRC More 2.6.3

Last Seen 2.6.3

Markerline 2.7.11

Message Notification 2.7.11

Nicksaid 2.6.3

Psychic Mode 2.7.11

Twitgin 0.2.1

Windows Pidgin Options 2.7.11

This happens so intermittently that it would take months to uncheck them one-by-one and see if that solved the problem. Therefore, I've decided to uncheck all of the clearly IRC-related ones (the ones I've indented above) all at once to see if that resolves the problem, but it will be a while before I can catch it doing it again and confirm whether either 2.7.11 or the disabling of those plugins had any effect. In the meantime, hopefully someone can suggest some other diagnostic avenues to track this down. Switching to 2.7.11 and disabling those plugins that seemed to be related to IRC, none of that helped and I am still experiencing this problem.

Attachments (2)

Pidgin_IRC_Unexpected_PART_1041.04.pcap (11.0 KB) - added by grank 8 years ago.
wireshark packet log of unexpected part
Pidgin_IRC_Unexpected_PART_1041.04_Aftermath.pcap (1.2 KB) - added by grank 8 years ago.
What happens after the phantom PART if I try to type in the channel

Download all attachments as: .zip

Change History (14)

comment:1 Changed 8 years ago by grank

  • Description modified (diff)
  • Version changed from 2.7.10 to 2.7.11

I can now confirm that this still happens on 2.7.11 and with the IRC-related plugins disabled.

comment:2 Changed 8 years ago by elb

Are you at all familiar with wireshark? If so, please try keeping a packet log of your IRC connection. That might give us some more information. You would typically do this by dumping TCP port 6667.

Are you using persistent chats?

I have no idea why this might be happening, I've not heard of it before. Looking at the code, the only times the IRC prpl itself seems to generate a part is 1) when the user closes the window, or 2) when the user runs /part.

comment:3 Changed 8 years ago by grank

I was wiresharking it all day yesterday but it didn't do it until I got home (at which time I was running off the wireless, not the ethernet, so I didn't catch it). Eventually I will, just can't say for sure how long it'll take. What do you mean by persistent chats?

comment:4 Changed 8 years ago by elb

Wait ... if you're changing physical networks, you must *necessarily* be disconnected and reconnected. That isn't what's going on here, is it?

Another developer also pointed out that the 'Got PART on ...' message might be happening when you close the window after the problem occurs, and that the 'Cannot send to channel' error message is actually originated by Freenode. If you're being disconnected and reconnected, is it possible you're losing nickserv authentication?

Changed 8 years ago by grank

wireshark packet log of unexpected part

Changed 8 years ago by grank

What happens after the phantom PART if I try to type in the channel

comment:5 Changed 8 years ago by grank

No, I just meant that I didn't catch the part last night because I didn't restart the wireshark capture after switching networks. And this occurs by itself, I'm not closing the window, that's the whole point. The part message happens while the window is still open and I haven't interacted with it in any way to cause it to occur. I remain connected to freenode the entire time, I just part the channel.

I just captured one a little more than an hour ago. I've attached the pcap file. You can ignore any packets to and from 47808, as that must be the XChat instance I'm using to monitor when the Pidgin instance drops; 47738 would seem to be the TCP port for Pidgin. The trouble packet is 47 in that capture.

I also attached what happens if I try to type in the channel window that's still left open. You're right that the "Cannot send to channel" message comes from freenode, not Pidgin. Then I close the window, and you see the PART you'd expect when the window gets closed, but freenode obviously responds "You're not on that channel".

comment:6 Changed 8 years ago by elb

Yeah, Pidgin is obviously sending the PART, and it doesn't seem that it's triggered by anything in particular. I have no idea where that is coming from. The only places that the irc prpl itself generates a part are when you close the window, or type /part.

Can you try unloading *all* plugins, and see if this goes away?

I'm going to ask some other Pidgin developers to look at this, there may be some behavior I'm not aware of which can cause chats to be exited ... but I don't think so.

comment:7 Changed 8 years ago by grank

I'll try, but this happens so intermittently and unpredictably that it takes a long time to say with any definity that yes, it has "gone away"...

In the meantime, disabling some of those plugins will make my pidgin experience much crappier while it sits there waiting for a fail (not being docked definitely sucks already).

More importantly, I can think of at least one plugin in use right now (SIPe) that doesn't appear in that plugins list, and I rely on that as I need to be on Office Communicator all day (the fact that pidgin's SIPe is the only one that works with my BPOS communicator is the reason I haven't long since switched to another program over this, to be honest) so even if there was a quick way to disable that, I couldn't.

I've disabled all the others via the plugins list checkboxes and I'll see what happens, but even if several days go by with no disconnect, what's the next step then? Turning them on one by one will take weeks :(

comment:8 Changed 8 years ago by elb

You can run a second instance of Pidgin without plugins (use pidgin -c), if you want, once you show that a second instance *with* plugins displays the same problem.

SIPe is a different sort of plugin, you won't be able to disable it anyway.

If unloading the plugins fixes it, the next step is to load only the first-party plugins. If it's still fixed, the next step is to start contacting third-party plugin authors. ;-)

comment:9 Changed 8 years ago by grank

Well, I've had all my plugins shut off for just about 2 weeks now and haven't experienced any unexpected PART that wasn't user-initiated. So I guess it's time to start turning plugins on a couple at a time...

However, I DID notice some unexpected PARTs that were user-initiated. When I disconnect, the IRC channel window stays open, with the message "The account has disconnected and you are no longer in this chat. You will be automatically rejoined in the chat when the account reconnects." However, when I reconnect, most of the time it opens a new window instead of continuing on in the old one. When I close the old window that has remained disconnected, it issues a PART, and the new window stays open although it is no longer in the channel, and just never writes any more lines. This is separate from the PARTs that were issued with no user interactivity at all, but is similar, certainly a bug and a huge pain. Should I open a separate bug for it or should we address it as part of this one?

comment:10 Changed 8 years ago by elb

That's a separate bug. In fact, it's probably two separate bugs. ;-) However, go ahead and file them as one.

On this bug, we want to narrow down whether the problem plugin is Pidgin-supplied or not, and whether the bug is IRC-specific or not. (I suspect the answers are no and no, respectively.) Start by re-loading only those plugins which are provided with Pidgin proper. It may or may not be difficult to figure out which those are, since Pidgin developers have a tendency to also maintain third-party plugins (particularly in the plugin pack). If your package manager allows you to simply uninstall all of the third-party plugin packages, you may want to do that. (You can leave the SIPe plugin.)

comment:11 Changed 8 years ago by grank

The only plugins that I really miss are Markerline, Message Notification, Nicksaid, and Windows Pidgin Options. The problem had continued with Markerline and Nicksaid unloaded, so unless the problem is in Message Notification (maybe I guess) or Windows Pidgin Options (almost certainly not), I'm okay leaving this one unsolved since I seem to be the only person in the universe experiencing it. I'll keep track of it for another couple weeks with those 4 plugins on and see if it reoccurs, and if it doesn't, I'll just mark it wontfix. The time*effort:reward ratio debugging it further is too high for me. ;)

I've created ticket #14300 for the double-window issue.

comment:12 Changed 5 years ago by mattofak

Resurrecting this ticket; I've been experiencing this same issue with Pidgin 2.10.6 (on Ubuntu 12.10.)

I have the following extensions enabled: Highlight Join/Part? Hiding Libnotify popups Makerline Message Notification Off-the-Record Messaging

I've yet to do any packet capture to see if it is exactly the same; but it's the same syndrome. Channel is idle for some time; stops receiving updates; and then Freenode tells me I cannot send to channel.

Note: See TracTickets for help on using tickets.
All information, including names and email addresses, entered onto this website or sent to mailing lists affiliated with this website will be public. Do not post confidential information, especially passwords!