All times are UTC.
00:15:50 <-- ecaron has quit (Quit: Instantbird 1.1) 00:21:31 <-- Tobin has quit (Quit: Everything you do is to hurt me, leave me alone.) 00:31:32 <-- Even1 has quit (Ping timeout) 00:31:48 --> Even has joined #instantbird 00:31:48 * ChanServ sets mode +o Even 01:00:01 <-- wesj has quit (Input/output error) 01:32:05 <-- Mook_as has quit (Quit: gone) 03:23:59 --> Mook has joined #instantbird 04:15:09 <-- Mook has quit (NickServ (GHOST command used by Mook_)) 04:15:48 --> Mook has joined #instantbird 04:50:05 <-- Mook has quit (Ping timeout) 04:51:00 --> Mook has joined #instantbird 04:57:34 <-- EionRobb has quit (Quit: Leaving.) 05:05:04 <-- Mook has quit (Ping timeout) 05:31:21 --> Mook has joined #instantbird 05:34:36 <-- Mook has quit (Ping timeout) 05:36:42 --> Mook has joined #instantbird 05:37:46 <-- Mook has quit (NickServ (GHOST command used by Mook_)) 06:16:56 --> BlueMaxima1 has joined #instantbird 06:17:00 <-- BlueMaxima has quit (Ping timeout) 06:59:37 <-- Tonnes has quit (Quit: ChatZilla 0.9.87 [Firefox 8.0/20111104165243]) 07:01:20 --> BlueMaxima has joined #instantbird 07:02:36 --> Tonnes has joined #instantbird 07:02:39 <-- BlueMaxima1 has quit (Ping timeout) 08:02:41 <-- BlueMaxima has quit (Ping timeout) 08:04:27 --> BlueMaxima has joined #instantbird 08:25:01 <-- gerard-majax has quit (Ping timeout) 09:20:39 --> mmkmou has joined #instantbird 09:22:56 <-- mmkmou has left #instantbird () 09:26:18 --> jb has joined #instantbird 09:36:57 --> Mic has joined #instantbird 09:36:57 * ChanServ sets mode +h Mic 09:38:41 <Mic> aleth: I've updated "Scroll keys" (now "Easy Scrolling"), to work with the sections. You might like that: https://addons.instantbird.org/en-US/instantbird/addon/290/ 09:39:47 <Mic> Arrow keys and Home/End work flawlessly now. 09:41:06 --> gerard-majax has joined #instantbird 09:56:58 --> flo has joined #instantbird 09:56:58 * ChanServ sets mode +qo flo flo 10:06:11 <-- Even has quit (Quit: Instantbird 1.2a1pre) 10:06:21 --> Even has joined #instantbird 10:06:21 * ChanServ sets mode +o Even 10:33:57 --> mmkmou has joined #instantbird 10:51:13 <-- mmkmou has left #instantbird () 11:23:54 <-- Even has quit (Quit: Instantbird 1.2a1pre) 11:41:39 <-- jb has quit (Connection reset by peer) 11:41:41 --> jb has joined #instantbird 11:59:06 <-- gerard-majax has quit (Ping timeout) 12:41:08 --> FeuerFliege has joined #instantbird 13:15:15 <instantbot> florian@instantbird.org granted review for attachment 1085 on bug 1199. 13:15:18 <instantbot> Bug https://bugzilla.instantbird.org/show_bug.cgi?id=1199 enh, --, ---, clokep, ASSI, Only notify prplIAccounts of status changes when enabled 13:17:30 --> Tomek has joined #instantbird 13:30:51 --> Even has joined #instantbird 13:30:51 * ChanServ sets mode +o Even 13:54:13 <-- flo has quit (Ping timeout) 13:54:26 --> flo has joined #instantbird 13:54:26 * ChanServ sets mode +qo flo flo 14:05:52 <-- Tomek has quit (Quit: Instantbird 1.1) 14:19:23 <-- BlueMaxima has quit (Quit: Instantbird 1.1) 15:04:42 --> Mic1 has joined #instantbird 15:06:26 * Mic1 is now known as bp 15:20:37 <flo> hmm, it seems JS-XMPP leaks memory at shutdown 15:20:41 <flo> or maybe that's socket.jsm 16:08:02 <-- bp has quit (Connection reset by peer) 16:10:29 --> igorko has joined #instantbird 16:36:30 --> myk has joined #instantbird 16:37:50 <-- myk has quit (Quit: Instantbird 1.1) 16:37:56 --> myk has joined #instantbird 16:42:36 <-- myk has quit (Quit: Instantbird 1.1) 16:42:37 --> myk has joined #instantbird 16:43:08 <-- myk has quit (Quit: Instantbird 1.1) 16:43:09 --> myk has joined #instantbird 16:45:48 --> gerard-majax has joined #instantbird 16:53:33 --> wesj has joined #instantbird 17:02:07 <-- Even has quit (Quit: Instantbird 1.2a1pre) 17:09:39 <-- myk has quit (Connection reset by peer) 17:25:25 --> myk has joined #instantbird 17:46:21 --> Mook_as has joined #instantbird 17:47:08 <-- gerard-majax has quit (Ping timeout) 18:33:54 <-- micahg has quit (Ping timeout) 18:39:44 --> BlueMaxima has joined #instantbird 18:47:11 --> gerard-majax has joined #instantbird 18:48:23 --> hunsly has joined #instantbird 18:49:44 --> micahg has joined #instantbird 18:54:02 <-- jb has quit (Ping timeout) 18:55:23 <-- Novarg has quit (Ping timeout) 19:04:50 <instantbot> florian@instantbird.org set the Resolution field on bug 1199 to FIXED. 19:04:53 <instantbot> Bug https://bugzilla.instantbird.org/show_bug.cgi?id=1199 enh, --, 1.2, clokep, RESO FIXED, Only notify prplIAccounts of status changes when enabled 19:05:25 <-- myk has quit (Max SendQ exceeded) 19:05:26 --> myk has joined #instantbird 19:05:26 --> Novarg has joined #instantbird 19:06:09 <Mic> clokep: I uploaded the VZ Net chat extension which I modified to work with js-xmpp: https://addons.instantbird.org/en-US/instantbird/addon/254/ 19:09:00 <flo> with the changes I've just pushed, I got rid of the JS errors at shutdown, and of a leak (each JS-XMPP account connection leaked the xmpp-session instance and 3 instances of the XML parser) 19:09:10 --> Tomek has joined #instantbird 19:09:20 <flo> I haven't managed to understand yet why all JS-XMPP conversations are leaked :-/ 19:09:43 <Mook_as> are there clear steps to reproduce? 19:09:51 <instantbot> Check-in: http://hg.instantbird.org/instantbird/rev/033dfcf2e107 - Florian Quèze - Fix JS-XMPP to not leak XML parsers. 19:09:52 <instantbot> Check-in: http://hg.instantbird.org/instantbird/rev/20dd664184cc - Florian Quèze - Correctly disable account manager buttons when going offline. 19:09:53 <instantbot> Check-in: http://hg.instantbird.org/instantbird/rev/e44b45bd28b1 - Florian Quèze - Avoid infinite recursion if an unread-message-count-changed observer calls markAsRead. 19:09:54 <instantbot> Check-in: http://hg.instantbird.org/instantbird/rev/59b6d45b646e - Patrick Cloke - Bug 1199 - Only notify prplIAccounts of status changes when enabled, r=fqueze. 19:09:55 <instantbot> Check-in: http://hg.instantbird.org/instantbird/rev/dccea7af73e6 - Florian Quèze - Disconnect JS-XMPP accounts when they are uninitialized. 19:09:56 <instantbot> Check-in: http://hg.instantbird.org/instantbird/rev/80b48d1c1554 - Florian Quèze - Avoid shutdown errors when conversations were still opened. 19:10:17 <flo> Mook_as: open a conversation using JS-XMPP (either Google talk or Facebook chat). 19:11:22 <flo> we leak at least 2 nsXPCWrappedJS for each message in that conversation, + some more objects (conversation participants, etc...) 19:11:22 <Mook_as> okay, I guess that means I need a debug build... at least this will be doable on linux 19:11:30 <flo> it's probably the whole conversation object that is leaked though 19:11:39 <flo> (the conversation references messages and participants) 19:12:33 <flo> and the fix I checked in for the XML parser leaks is awful :-( 19:13:36 <flo> I'm almost sure there's a real Mozilla bug somewhere in the parser, but I don't understand this code well enough to be able to file a useful bug. (and if I understood the situation, fixing the bug would probably be the fastest way to understand what I need to describe in the bug) 19:14:36 --> Mnyromyr has joined #instantbird 19:14:53 <Mook_as> wtf @ http://hg.instantbird.org/instantbird/rev/033dfcf2e107#l1.24 19:15:27 <flo> Mook_as: it keeps all sorts of silly references, and the cycle collector doesn't seem to do its job :( 19:15:43 * Mook_as has never trusted the cycle collector 19:15:53 <Mook_as> too much magic; I prefer breaking xpcom cycles manually. 19:16:18 <flo> plus, if I don't call onStopRequest by hand, the nsSAXXMLReader keeps a reference to an nsParser instance (and create a cycle) 19:16:29 <flo> and if I do call it, the next parser crashes... 19:16:50 <Mook_as> haha 19:17:19 <flo> I hate that patch 19:17:31 <flo> and that kind of silly workaround take a while to figure out... 19:20:13 <flo> Mook_as: if you can find time to make a debug build and find the cause of the conversation leak that would be awesome :) 19:20:33 <Mook_as> I can _try_ 19:20:51 <Mook_as> that, or fall asleep... hey, I'm taking tomorrow-until-end-of-year off :p 19:21:02 <flo> :) 19:22:07 <flo> I'll go eat diner. I'll probably be back in a few hours :) 19:22:10 <-- flo has quit (Quit: Instantbird 1.2a1pre) 19:23:01 * Mook_as feels bad but can't help but imagine a godzilla-sized flo eating a restaurant 19:26:51 <Mnyromyr> :-D 20:09:44 <-- hunsly has quit (Ping timeout) 20:41:33 <-- igorko has quit (Quit: Instantbird 1.1) 20:43:26 --> flo has joined #instantbird 20:43:26 * ChanServ sets mode +qo flo flo 20:51:31 <-- FeuerFliege has quit (Ping timeout) 20:56:33 <flo> I'm not sure if this is good or bad news, but the conversation leak also exists with jsTest 20:56:44 <flo> so JS-XMPP is probably not faulty for this one 20:56:55 <flo> and I'll need to search for a possible cause in jsProtoHelper 20:58:02 <flo> and I've just double checked that conversations on libpurple-based protocols don't have this leak 21:04:18 <Mook_as> good news, I think, because that means less code to look at 21:04:49 <Mook_as> out of curiosity: is there unit test coverage of ib in general? 21:05:16 <flo> no 21:06:13 <flo> and we wouldn't have enough machines to run these tests if we had them :( 21:06:56 <flo> I would really like to have a very simple test that checks that a build can start and open a conversation windows before starting the upload 21:07:19 <flo> I would be more confident in our nightly builds if we had at least that! :) 21:11:13 <flo> hmm, I can have libpurple-based conversations that don't leak, so it's safe to assume the problem isn't related to displaying the conversation, right? 21:13:04 <flo> hmm, the jsProtoHelper-based conversations keep a ref to the prplAccount 21:13:21 <flo> and I wouldn't be surprised if the account had a reference to all active conversation it has 21:13:33 <Mook_as> but that means your leak log should also have a prplAccount? 21:13:44 <Mook_as> oh, I guess if that's implemented in JS too... 21:13:59 <flo> hmm, no. jsTest drops the reference it has to its conversations when the account is disconnected 21:14:13 <flo> Mook_as: all of that is in JS 21:14:17 <Mook_as> ugh 21:14:23 <Mook_as> got a heap dump I can skim? 21:14:47 <flo> Mook_as: the log looks like this http://pastebin.instantbird.com/4113 21:15:08 <flo> I'll see if dropping the ref from the conv to the account when the conv is closed helps 21:15:48 <Mook_as> that's the leak log, not the heap dump :) 21:16:12 <Mook_as> (and yeah, it just says "something in JS, pretending to be xpcom") 21:16:17 <flo> yeah, but you can see if there are classes I could suspect 21:16:52 <Mook_as> the only thing useful is nsPrefBranch, and... that's not _very_ useful. just means you are leaking an object with it on there somewhere 21:17:06 <flo> yeah 21:17:11 <Mook_as> (or, I suppose, pref observers leaking...) 21:17:17 <flo> there used to be useful things, but I fixed them ;) 21:17:25 <flo> nsSAXXMLReader, nsParser, etc... 21:17:52 <Mook_as> don't worry; if my songbird experience applies here, you should get new ones in a month :p 21:18:43 <flo> dropping that ref doesn't help 21:19:04 <flo> Mook_as: well, I haven't seriously tried to look at the list generated by Thunderbird with my stuff in it 21:19:13 <flo> too long :-D 21:19:41 <flo> and I think starting by parts of the code that come from Instantbird and clearly have issues is a good idea 21:19:42 <Mook_as> hahaha 21:20:03 <Mook_as> does thunderbird-without-instantbird not leak? 21:22:00 <flo> Mook_as: http://queze.net/goinfre/js-leaks.txt 21:22:36 <flo> Mook_as: huh... I can't tell, but I think it does 21:23:03 <flo> "I can't tell" -> because my thunderbird debug build isn't really "clean" ;) 21:26:42 <flo> hmm, messages have a ref to the conversation, and conversations to the list of messages 21:27:33 <flo> but that should only slow down the garbage collection of these objects, right? 21:28:17 <flo> hmm, or maybe if there are wrappers between them that creates artificial JS roots? 21:32:10 <flo> Mook_as: is there a way in that heap dump to know what are the roots? 21:35:49 --> Mic1 has joined #instantbird 21:56:49 --> mmkmou has joined #instantbird 22:01:44 <Mook_as> sorry, was afk (late lunch) 22:01:54 <Mook_as> and, not that I've figured out 22:03:35 <Mook_as> oh boy, timers may be involved 22:05:56 <-- Mic1 has quit (Quit: Instantbird 1.2a1pre) 22:07:43 <Mook_as> also, http://lxr.instantbird.org/instantbird/source/chat/components/src/imConversations.js#51 is an observer - I don't know the code; does it get removed correctly? 22:08:40 <Mook_as> http://lxr.instantbird.org/instantbird/source/chat/components/src/imConversations.js#92 says no, because .bind() creates a new function and it's hard to unobserve something you don't have a handle on... but perhaps the purpleIConv does something 22:14:49 <flo> Mook_as: that object observes both the contact (observer added at line 64; removed at line 128 + in unInint in a patch I checked-in today) and the prplIConversation instances (observers added at line 92, never removed). 22:15:31 <flo> they aren't removed because a prplIConversation can only be linked to one imConversation, and that link continues for the whole lifetime of the purpleIConversation 22:15:54 <flo> so we have a cycle between imConversation and prplIConversation, but that shouldn't create a JS root, right? 22:17:06 * flo is breaking that cycle to see if that changes the leak 22:17:32 <flo> oooh, it's the bind call that creates the wrapper 22:17:53 <Mook_as> yeah, the bind makes a new function, so you can't get at it to remove it 22:18:06 <Mook_as> I'm also suspicious of http://lxr.instantbird.org/instantbird/source/chat/modules/imContentSink.jsm#193 22:18:36 <flo> I don't need to remove that observer 22:18:49 <flo> the whole observed object goes away at the same time as the observing object 22:18:56 <Mook_as> okay :) 22:19:06 <flo> it's just that bind creates a wrapper, which prevents garbage collection 22:19:07 <Mook_as> err, Services.prefs? 22:19:11 <flo> or at least I think it's the problem 22:19:14 <Mook_as> right, that's for imConversations 22:19:29 <flo> if I just delete this._observers in GenericConversationPrototype.unInit I don't have the leak any more 22:19:31 <Mook_as> and now back to Real Work for me :) 22:20:07 <flo> if I create a JS closure with a regular function instead of using bind, do you think it will be collected? 22:20:14 <-- mmkmou has left #instantbird () 22:20:58 <Mook_as> I'd add this.observeConv = this.observeConv.bind(this) or something along those lines instead, I think 22:21:13 <Mook_as> (so you actually have a ref you can remove manually) 22:21:35 <flo> I don't want to remove it 22:21:45 <Mook_as> ah, okay 22:21:53 <Mook_as> then... errr, something, magic? :p 22:27:45 <flo> well, it doesn't leak any more with jsTest, that doesn't mean everything will be OK with js-xmpp 22:27:59 <Mook_as> but it's going to be not-worse, right? :) 22:28:14 <flo> and getting rid of the observer cycle wasn't enough, the account cycle I had identified previously also needs to be broken by hand 22:28:39 <flo> sure 22:28:43 <flo> it's also going to be "let's try!" 22:32:29 <flo> XMPP MUCs don't leak any more 22:32:34 <flo> private xmpp conversations still do 22:35:00 <-- Mic has quit (Ping timeout) 22:35:36 <flo> uh well, there's a JS error when closing a private xmpp conversation because of my change to fix the leak I've identified before :-/ 22:47:09 <-- DGMurdockIII has quit (Quit: get satisfied!  :: core-networks.de ««« (Gamers.IRC) »»» gamersirc.net ::) 23:01:36 <-- Mnyromyr has quit (Quit: ChatZilla 0.9.86 [SeaMonkey 1.1.19/2010030105]) 23:35:19 <flo> Mook_as: I've pushed a fix. Thanks for the help! :) 23:35:29 <flo> and enjoy your time off :) 23:38:39 <Mook_as> you're welcome! 23:38:55 <Mook_as> does that mean there are no known leaks at this point? 23:40:07 <instantbot> Check-in: http://hg.instantbird.org/instantbird/rev/20994ee9bfaa - Florian Quèze - Avoid leaking JS conversations.