Opened 10 years ago

Closed 10 years ago

Last modified 10 years ago

#2486 closed defect (fixed)

Away message and profile occasionally do not display

Reported by: drquoz Owned by: MarkDoliner
Milestone: 2.2.0 Component: pidgin (gtk)
Version: 2.1.0 Keywords:
Cc:

Description

If I set my profile to something long, like a religious document, and my away message to something long, like a Jim Steinman song (see attached screenshot), if I view my buddy info, often it will not display. I think it might be length-based, because if I set my profile to "this is my profile" and my away message to "I am elsewhere," I can see them both fine. I can't really find a pattern, though, because I just set it back to the long stuff and I can now see the profile but not the away message. The strange thing is that other people can see them both even when I can't. As a final note, I have observed this phenomenon in both Ubuntu and Windows XP.

Attachments (3)

screenshot.jpg (133.2 KB) - added by drquoz 10 years ago.
Screenshot for ticket #2486
fix2 (479 bytes) - added by glasserc 10 years ago.
A clumsy fix
screenshot-bugisfixed.jpg (173.8 KB) - added by drquoz 10 years ago.
Screenshot: bug appears to be fixed

Download all attachments as: .zip

Change History (28)

Changed 10 years ago by drquoz

Screenshot for ticket #2486

comment:1 Changed 10 years ago by drquoz

Update: I have also observed this with two other people on my buddy list, not just me. As before, sometimes it happens and sometimes it doesn't.

comment:2 Changed 10 years ago by glasserc

I'm seeing something similar. Apostrophes are allowed, but appear to lower the critical threshhold at which away messages stop working. If an away message isn't allowed, it will not replace the previous away (which can be "none"). Non-allowed away messages also prevent my profile from being uploaded (as far as I can tell), but as soon as an OK away is set, the profile goes up. Let me know if I can do anything to help debug this.

Ethan

comment:3 Changed 10 years ago by glasserc

Hey, just a note that I upgraded to 2.1.1 and it's still there. When this happens, it appears that it is actually uploading an away message, just a clipped and mangled one (I checked from another computer running an older version of pidgin) but on my machine it still shows the old message.

Ethan

comment:4 Changed 10 years ago by glasserc

OK, my mistake. I think this is solely a GUI problem. One of my friends just put up an away message that showed up as blank, but I fired up Kopete and it showed it fine. Then, for fun, I put up one of my long away messages. It triggered the bug where my old away message stayed visible, but when viewed from Kopete, the new one had gone up.

Hope this helps.

Ethan

comment:5 Changed 10 years ago by glasserc

Hmm, I sent a message to myself and Pidgin showed that it had sent the away message as an auto-reply, but Kopete never got it. So maybe it's not just a GUI issue.

Ethan

comment:6 Changed 10 years ago by EdOfTheFu

I also have this issue. It is ENORMOUSLY frustrating to find that half my away messages simply will not display anymore - neither for me, nor for others looking at my profile.

comment:7 Changed 10 years ago by drquoz

This is something I forgot to check when I first posted this, but I'm currently only noticing this with my AIM account; my Google Talk and Yahoo accounts are displaying my away message just fine. Is that what everyone else is seeing? Hopefully that'll help.

comment:8 Changed 10 years ago by glasserc

Yeah, same here -- at least on Google Talk. I don't have a Yahoo account.

Ethan

comment:9 Changed 10 years ago by glasserc

Hi,

As a test, I opened Wireshark up and did a get-info on one of my friends whose away message is currently not showing up. I did get a response with an away message and an info, so I think this is after all a UI problem with pidgin.

Ethan

comment:10 Changed 10 years ago by glasserc

Hi again,

I tried viewing my away message in finch, and I got the same error, so I guess this means the problem's in libpurple.

In the meantime, here's an away message that triggers the bug:

Life is too short to refrain from eating jam out of the jar Life is too short to refrain from eating jam out of the jar Life is too short to wait around for you to come home tonight Life is too short, too short, to do that --Mountain Goats, "Jam Eater Blues"

Ethan

comment:11 Changed 10 years ago by arribastan

I too have this problem, it's incredibly annoying. It's bad enough that at the moment I'm directing everyone who asks me about pidgin to the 2.02 version because it's the newest one without this bug. I've observed it on Ubuntu 7.04 and Windows XP. One of my friends has also observed it on his Windows XP machine. As mentioned, only AIM accounts suffer from this. Only people with the newest version are affected (For instance, a friend with 2.02 can see my away message and profile but I cannot), which I take to mean it is a problem with receiving the away message rather than sending it. It seems like there is also a maximum of 3 line breaks before the problem shows up.

comment:12 Changed 10 years ago by EdOfTheFu

Here's the weirdest thing - I have a profile and I just set with the following away message:

He put his shoulders back and his heels together. "To hell with the handkerchief," said Walter Mitty scornfully. He took one last drag on his cigarette and snapped it away. Then, with that faint, fleeting smile playing about his lips, he faced the firing squad; erect and motionless, proud and disdainful, Walter Mitty the Undefeated, inscrutable to the last.

Which used to work just fine. But now:

  • In Pidgin I do not see my away message, just my profile.
  • In meebo, on another account, I do not see my profile nor my away message.
  • In AIM Express, on another account, I do not see my profile nor my away message.
  • In Gaim 1.5, on another account - I see both my profile AND away message.

And then just now - Pidgin had some weird problem where in trying to set the away message it would not set my status to away in my own buddy list (I was still the green dot). So I disabled my AIM account then enabled it again - then set that away message - and for a brief second I could see my own away message when I moused over myself! Then it was gone, and then it was no longer in right-click -> Get Info either.

This is unbelievably frustrating.

comment:13 Changed 10 years ago by EvilSporkMan

This is definitely length based; 250 characters of away message is sufficient to reproduce the away message issue. (I have not looked into the profile component of this issue.) Steps to reproduce:

  1. Add yourself to your AIM buddy list.
  2. Set an away message with 250 characters in it.
  3. Right-click yourself and click Get Info.

Observed behavior: away message is not displayed. Expected behavior: away message is displayed.

The problem here is that the aim_userinfo_t is not being filled in as we expect for long messages. Here is a printout of the struct in normal circumstances: Breakpoint 2, purple_parse_userinfo (od=0xd4f1f00, conn=0xd31c050,

fr=0xd31c0b8) at oscar.c:2857

2857 user_info = purple_notify_user_info_new(); 1: *userinfo = {sn = 0xd326300 "t3hroxor", warnlevel = 0, idletime = 0,

flags = 48, createtime = 1013478509, membersince = 1049754021, onlinesince = 1188764228, sessionlen = 7179, capabilities = 131117, icqinfo = {status = 0, ipaddr = 0, crap = '\0' <repeats 36 times>}, present = 943, iconcsumtype = 0 '\0', iconcsumlen = 5, iconcsum = 0xd5673f0 "\002\001�\004r", info = 0xe1de650 "<html><body>You can call us Aaron Burr from the way we're droppin Hamiltons.<br><br>I AM LOCUTUS OF BORG! YOU WILL RESPOND TO MY QUESTIONS!</body></html>", info_encoding = 0xcd5e4c0 "text/aolrtf; charset=\"us-ascii\"", info_len = 153, status = 0xddef170 "away", status_encoding = 0x0, status_len = 4, itmsurl = 0x0, itmsurl_encoding = 0x0, itmsurl_len = 0, away = 0xe132940 "<html><body>away</body></html>\"", away_encoding = 0xdfdf0f0 "text/aolrtf; charset=\"us-ascii\"", away_len = 30, next = 0x0}

And here it is with the bug reproduced: Breakpoint 2, purple_parse_userinfo (od=0xe19b400, conn=0xd59fc00,

fr=0xd59fc68) at oscar.c:2857

2857 user_info = purple_notify_user_info_new(); 1: *userinfo = {sn = 0xe1ad490 "t3hroxor", warnlevel = 0, idletime = 0,

flags = 48, createtime = 0, membersince = 1049754021, onlinesince = 1188771470, sessionlen = 0, capabilities = 131117, icqinfo = {

status = 0, ipaddr = 0, crap = '\0' <repeats 36 times>}, present = 423,

iconcsumtype = 0 '\0', iconcsumlen = 5, iconcsum = 0xe10dda0 "\002\001�\004r", info = 0x0, info_encoding = 0x0, info_len = 0, status = 0xe1c9b60 "abcdefghijklmnopqrstuvabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz1234567890123456789012345678901234567890123456789012345678901234567890X200 1234567890123456789aaaaaa"..., status_encoding = 0x0, status_len = 230, itmsurl = 0x0, itmsurl_encoding = 0x0, itmsurl_len = 0, away = 0x0, away_encoding = 0x0, away_len = 0, next = 0x0}

This is using 2.1.1 on Linux. The exact away message I set was: abcdefghijklmnopqrstuvabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz1234567890123456789012345678901234567890123456789012345678901234567890X200 1234567890123456789aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa12345

Here's the backtrace for that breakpoint: (gdb) bt #0 purple_parse_userinfo (od=0xe19b400, conn=0xd59fc00, fr=0xd59fc68)

at oscar.c:2857

#1 0x00002aaabe68b354 in userinfo (od=0xe19b400, conn=0xd59fc00,

mod=0xdfffe90, frame=0xd59fc68, snac=0x7fffa668e7e0, bs=0xd59fc70) at family_locate.c:1279

#2 0x00002aaabe68b904 in snachandler (od=0xe19b400, conn=0xd59fc00,

mod=0xdfffe90, frame=0xd59fc68, snac=0x7fffa668e7e0, bs=0xd59fc70) at family_locate.c:1453

#3 0x00002aaabe693e85 in parse_snac (od=0xe19b400, conn=0xd59fc00,

frame=0xd59fc68) at flap_connection.c:675

#4 0x00002aaabe6940e8 in parse_flap (od=0xe19b400, conn=0xd59fc00,

frame=0xd59fc68) at flap_connection.c:761

#5 0x00002aaabe6943e4 in flap_connection_recv_cb (data=0xd59fc00, source=18,

cond=PURPLE_INPUT_READ) at flap_connection.c:886

#6 0x000000000046203d in pidgin_io_invoke (source=0xd327bf0,

condition=G_IO_IN, data=0xd017ea0) at gtkeventloop.c:77

#7 0x00002aaaadfb1f44 in g_main_context_dispatch ()

from /lib64/libglib-2.0.so.0

#8 0x00002aaaadfb4d7d in g_main_context_check () from /lib64/libglib-2.0.so.0 #9 0x00002aaaadfb508a in g_main_loop_run () from /lib64/libglib-2.0.so.0 #10 0x00002aaaac4e7b13 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0 #11 0x000000000047c514 in main (argc=1, argv=0x7fffa6690dd8) at gtkmain.c:883

Assigning to KingAnt? because it's a problem with the oscar prpl somewhere.

comment:14 Changed 10 years ago by MarkDoliner

  • Owner set to MarkDoliner
  • Status changed from new to assigned

comment:15 Changed 10 years ago by glasserc

Hey,

I spent some time poking around the oscar prpl. It seems that aim_info_extract behaves oddly on people with long away messages -- the subsequent TLVs change type from 0x0027, 0x000f to 0x696e, 0x4153 (these are character pairs from inside the available message, and I have no idea why this is happening).

Ethan

comment:16 Changed 10 years ago by glasserc

It looks like what's happening is that on long away messages, aim_info_extract gets a TLV with type 0x001d that has a long length (over 255), but because length is only 8 bits, it gets some weird number and calculates a bogus endpos. Then, after the inner loop is over, it saves the bogus endpos, which ends up being in the middle of the available message. This then messes up the aim_tlvlist_read call in userinfo.

Ethan

Changed 10 years ago by glasserc

A clumsy fix

comment:17 Changed 10 years ago by glasserc

This patch "forces" endpos to be the same as endpos2, thus circumventing the "save ourselves" guard on line 926. I'm a little uncomfortable with this, because resetting endpos all the time is a bit of defensive programming to guard against misalignment and so on, but a better solution hasn't occurred to me yet.

Ethan

comment:18 Changed 10 years ago by glasserc

I'm still seeing away messages flick off now and again, and then come back later, so I guess the patch doesn't completely fix the problem.

Ethan

comment:19 Changed 10 years ago by MarkDoliner

  • Resolution set to fixed
  • Status changed from assigned to closed

Alright, I changed length to read in 16 bits instead of just 8. Hopefully that will fix this and not break anything else. The fix should be in the next release of Pidgin (2.2.0). Thanks for the bug report and comments!

comment:20 Changed 10 years ago by markdoliner@…

  • Milestone set to 2.2.0

(In 811e40260e6cab863abab8599b763db2dd711891) Looks like I might have been wrong about the length being only 8 bits. Fixes #2486 I think

comment:21 Changed 10 years ago by denilson3

this is not fixed for me in 2.2 in both windows and ubuntu.

comment:22 Changed 10 years ago by drquoz

I have replicated the original conditions under which I first noticed the bug (i.e. a really freaking long away message and a really freaking long profile), and I have experienced no problems. I am satisfied that my bug report has been resolved.

Changed 10 years ago by drquoz

Screenshot: bug appears to be fixed

comment:23 follow-up: Changed 10 years ago by MarkDoliner

denilson3: Can you please describe exactly what you're seeing? Does it just take a long time before the away messages shows up? Do you see info/away messages for some people but not for everyone? If you "Get Info" for those people does it work correctly?

comment:24 in reply to: ↑ 23 Changed 10 years ago by denilson3

Replying to MarkDoliner:

denilson3: Can you please describe exactly what you're seeing? Does it just take a long time before the away messages shows up? Do you see info/away messages for some people but not for everyone? If you "Get Info" for those people does it work correctly?

I am unable to set my own away message to something longer than a sentence or two (>250 characters perhaps as was suggested earlier in the thread??). It does not show up when I add myself to my own buddy list or when I get info myself on someone else's computer. I see other people's away messages just fine as far as I know on my buddylist.

comment:25 Changed 10 years ago by denilson3

update: i let pidgin go away idle on its own and after one restart of the program things now seem to working as expected..very strange. i guess its fixed! thank you.

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!