-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Pidgin Consistently Crashes #178
Comments
Sorry, I had to remove the gist, it had a ton of sensitive data on second glance.
Which strengthens my argument that it's somehow related to eating a bad character. |
I just disabled my smileys too, thinking that was somehow related. Nope. Crashed anyways. This time it made it ten minutes. |
If you want to send me logs directly I can take a look, or a coredump/traceback would be ideal. I did get a chance to glance at the logs before you removed them and noticed a json memory error right before the crash that looks like it's actually coming from groupme. If you could turn off all other plugins and connections except a single slack that would help track it down. |
That is interesting, but it doesn't crash when I leave everything else on. That said, I'll get you that traceback soon. I'll also shut off all other plugins and see if I can still get it to crash. |
I got it to happen again, this time with the only plugin being on was slack-libpurple. In the first gist, only the slack plugin was on. The second gist represents the content of the log I originally gave you, but with anonymized data. |
EDIT: Please disregard the following backtrace, it isn't the right one. I gave the wrong one because apport only keeps one backtrace at a time, and so I thought this one was "the one" caused by the plugin, when it was really caused by my quitting the application before starting up again in order to get the debug symbols. Sorry. ORIGINAL TEXT: For what it's worth, I provide the stack trace I was able to pull below. Unfortunately it's not very useful :( since there appears to be a double-error. My theory is that an error occurs, causing an exception, but then there is a (I think?) double-free error which prevents the stack trace from printing the actual error, instead showing us the use-after-free that occurs while pidgin tried to clean up the first error. Here it is:
|
I apologize, that's not the right backtrace at all. It was a mix-up. I'll get you the right one. |
Got the correct backtrace. Here it is:
|
Ah, this looks potentially straight-forward -- there's a 4 second callback to clear chat typing flags, but if the chat conversation was closed during these 4 seconds, I could certainly see this happening. This code actually came from @EionRobb who knows more about this than me. Should we register a handler for |
I'm using the following diff to try to fix the issue. I don't know what I'm doing, but basically I'm storing the channel and account in
|
That extra |
If you want to follow along at home with my tests, they are here: https://github.com/djhaskin987/slack-libpurple/tree/bugfix/crashing-and-memory |
This change addresses dylex#178, which is a ticket concerning constant daily crashes of pidgin. The crashes seem to happen when a chat window is closed while a "user is typing" timeout window is open. When this happens, the chat pointer stored is freed by pidgin. Then it is dereferenced and crashes. The change here is to look the chat up again at the end of the timeout. That way a null returned pointer informs the program that the chat is no longer open. The change also gets rid of what I believe to be a double-free.
Tests went well. I submitted a PR with my changes in #179 :) |
This change addresses dylex#178, which is a ticket concerning constant daily crashes of pidgin. The crashes seem to happen when a chat window is closed while a "user is typing" timeout window is open. When this happens, the chat pointer stored is freed by pidgin. Then it is dereferenced and crashes. The change here is to look the chat up again at the end of the timeout. That way a null returned pointer informs the program that the chat is no longer open. The change also gets rid of what I believe to be a double-free.
Pidgin has consistently crashed for me, but only when this plugin is enabled.
It has done so for like a year. It would crash about once a day. This last month though, it has gotten unusable. Today it crashed four times.
Unfortunately I don't have a copy with debug symbols, but I did get this
pidgin --debug
log posting debug information right up until it crashed. This time, it took only perhaps 2 minutes to crash.It's like it does this when it retrieves certain messages or something from the server. It comes and goes, which makes me think it's slack content related.
The text was updated successfully, but these errors were encountered: