adium-1.4 3630:a331644b1ed4: I have a theory that this may be th...
commits at adium.im
commits at adium.im
Mon Aug 29 02:09:21 UTC 2011
details: http://hg.adium.im/adium-1.4/rev/a331644b1ed4
revision: 3630:a331644b1ed4
branch: (none)
author: Evan Schoenberg
date: Sun Aug 28 21:07:02 2011 -0500
I have a theory that this may be the solution to the remaining AIProxyListObject crash issue; if the userlist is hidden, as it is by default in the Twitter timeline, then items in the list could previously deallocate without us calling reloadData. The list might try to access its data even if it's not visible if it's is calculating frame heights - and all the recent crashes are in:
{{{
com.apple.AppKit 0x9185c751 -[NSTableView _minimumFrameSize] + 72
com.apple.AppKit 0x91866cfc -[NSTableView tile] + 252
com.apple.AppKit 0x9189dd4e -[NSTableView viewWillDraw] + 75
com.apple.AppKit 0x9189d862 -[NSView viewWillDraw] + 621
}}}
Refs #14294. Please report if you can reproduce the crash after this commit.
(transplanted from 333c3a8b9b13cbe4a7f2befb9477b98ae052b8c5)
Subject: adium-1.4 3631:6faa02098034: Increased comment detail
details: http://hg.adium.im/adium-1.4/rev/6faa02098034
revision: 3631:6faa02098034
branch: (none)
author: Evan Schoenberg
date: Sun Aug 28 21:08:25 2011 -0500
Increased comment detail
(transplanted from 03b0a921bb0fbc182577093fb9ec529af2d9b86d)
diffs (56 lines):
diff -r 354e4828e888 -r 6faa02098034 Frameworks/Adium Framework/Source/AIProxyListObject.m
--- a/Frameworks/Adium Framework/Source/AIProxyListObject.m Sun Aug 28 19:17:33 2011 -0500
+++ b/Frameworks/Adium Framework/Source/AIProxyListObject.m Sun Aug 28 21:08:25 2011 -0500
@@ -48,7 +48,12 @@
proxy = [proxyDict objectForKey:key];
if (proxy && proxy.listObject != inListObject) {
- /* This is a memory management failure; AIContactController stopped tracking a list object, but it never deallocated. -evands 8/7/11 */
+ /* This is generally a memory management failure; AIContactController stopped tracking a list object, but it never deallocated and
+ * so never called [AIProxyListObject releaseProxyObject:].
+ *
+ * I've seen one case where proxy.listObject referred to a zombie object. I can't reproduce. If that happens, we'll get a crash here in
+ * debug mode only. -evands 8/28/11
+ */
AILogWithSignature(@"%@ was leaked! Meh.", proxy.listObject);
proxy.listObject = inListObject;
@@ -61,7 +66,6 @@
proxy.containingObject = inContainingObject;
proxy.key = key;
[inListObject noteProxyObject:proxy];
-
[proxyDict setObject:proxy
forKey:key];
[proxy release];
@@ -77,6 +81,7 @@
*/
+ (void)releaseProxyObject:(AIProxyListObject *)proxyObject
{
+ AILogWithSignature(@"%@", proxyObject);
[[proxyObject retain] autorelease];
proxyObject.listObject = nil;
[proxyDict removeObjectForKey:proxyObject.key];
diff -r 354e4828e888 -r 6faa02098034 Plugins/Dual Window Interface/AIMessageViewController.m
--- a/Plugins/Dual Window Interface/AIMessageViewController.m Sun Aug 28 19:17:33 2011 -0500
+++ b/Plugins/Dual Window Interface/AIMessageViewController.m Sun Aug 28 21:08:25 2011 -0500
@@ -1232,15 +1232,12 @@
*/
- (void)chatParticipatingListObjectsChanged:(NSNotification *)notification
{
- //Update the user list
- AILogWithSignature(@"%i, so %@ %@",[self userListVisible], ([self userListVisible] ? @"reloading" : @"not reloading"),
- userListController);
-
[chat resortParticipants];
-
+
+ /* Even if we're not viewing the user list, we can't risk it keeping stale information about potentially released objects */
+ [userListController reloadData];
+
if ([self userListVisible]) {
- [userListController reloadData];
-
[self updateUserCount];
}
}
More information about the commits
mailing list