Closed
Bug 951520
Opened 11 years ago
Closed 11 years ago
Error: this.folderDisplay.treeSelection is null File: chrome://messenger/content/messageWindow.js Line: 260
Categories
(Thunderbird :: Mail Window Front End, defect)
Thunderbird
Mail Window Front End
Tracking
(Not tracked)
RESOLVED
FIXED
Thunderbird 29.0
People
(Reporter: ishikawa, Assigned: ishikawa)
Details
Attachments
(1 file)
970 bytes,
patch
|
mkmelin
:
review+
|
Details | Diff | Splinter Review |
I got the error in the title,
Error: this.folderDisplay.treeSelection is null
in Error console of Thunderbird while I am using the current release (24.0.2) under Debian GNU/Linux 32 bits.
I got this error when I opened an attached email messages (I mean an e-mail message is attached to a mail message and was sent.) I opened the attached message
in a stand alone window. The error(s) seemed to be related to the opening and closing of the message thus opened, but there is no clear reproducible manner.
I noticed the problem last evening and this morning, and co-related what I was doing to the timestamp of errors, and figured that the error seemed easily triggered by opening such attached messages (actually I got three attached messages in one e-mail) and closing them. But the error seemed to be generated
almost asynchronously AFTER the messages are closed.
Anyway, looking at the code where the error occurs,
chrome://messenger/content/messageWindow.js (inside omni.ja)
onMessagesRemoved:
function StandaloneMessageDisplayWidget_onMessagesRemoved() {
==> if (this.folderDisplay.treeSelection.count == 0 &&
Services.prefs.getBoolPref("mail.close_message_window.on_delete")) {
window.close();
return true;
}
return false;
},
and see that a JS file explicitly checks for the treeSelection validity when
a message is removed as in
http://mxr.mozilla.org/comm-central/source/mail/base/content/folderDisplay.js#1156
1124 /**
1125 * Messages (that may have been displayed) have been removed; this may impact
1126 * our message selection. We might know it's coming; if we do then
1127 * this._nextViewIndexAfterDelete should know what view index to select next.
1128 * For the imap mark-as-deleted we won't know beforehand.
1129 */
1130 onMessagesRemoved: function FolderDisplayWidget_onMessagesRemoved() {
1131 FolderDisplayListenerManager._fireListeners("onMessagesRemoved",
1132 [this]);
1133
1134 if (this.messageDisplay.onMessagesRemoved())
1135 return;
1136
1137 // - we saw this coming
1138 let rowCount = this.view.dbView.rowCount;
1139 if (!this._massMoveActive && (this._nextViewIndexAfterDelete != null)) {
1140 // adjust the index if it is after the last row...
1141 // (this can happen if the "mail.delete_matches_sort_order" pref is not
1142 // set and the message is the last message in the view.)
1143 if (this._nextViewIndexAfterDelete >= rowCount)
1144 this._nextViewIndexAfterDelete = rowCount - 1;
1145 // just select the index and get on with our lives
1146 this.selectViewIndex(this._nextViewIndexAfterDelete);
1147 this._nextViewIndexAfterDelete = null;
1148 return;
1149 }
1150
1151 // - we didn't see it coming
1152
1153 // A deletion happened to our folder.
1154 let treeSelection = this.treeSelection;
1155 // we can't fix the selection if we have no selection
1156 if (!treeSelection)
1157 return;
1158
we probably check for !treeSelection as in line 1156 above and return doing nothing here also.
I can create a patch if this is acceptable.
TIA
Assignee | ||
Comment 1•11 years ago
|
||
I am more convinced that my idea above seems to be acceptable now that
I searched for
and found two instances:
this.folderDisplay.treeSelection.count == 0
Found 2 matching lines in 2 files
/mail/base/content/messageWindow.js (View Hg log or Hg annotations)
line 263 -- if (this.folderDisplay.treeSelection.count == 0 &&
/mail/base/content/messageDisplay.js (View Hg log or Hg annotations)
line 539 -- if (this.folderDisplay.treeSelection.count == 0 &&
The one in messageDisplay.js seems to be the code in question and the other
is
http://mxr.mozilla.org/comm-central/source/mail/base/content/messageWindow.js#263
and note the check on line 261.
259 onMessagesRemoved:
260 function StandaloneMessageDisplayWidget_onMessagesRemoved() {
261 if (!this.folderDisplay.treeSelection)
262 return true;
263 if (this.folderDisplay.treeSelection.count == 0 &&
264 Services.prefs.getBoolPref("mail.close_message_window.on_delete")) {
265 window.close();
266 return true;
267 }
268 return false;
269 },
So somehow the checking !this.folderDisplay.treeSelection was missed here.
TIA
Assignee | ||
Comment 2•11 years ago
|
||
A proposed patch.
TIA
Assignee: nobody → ishikawa
Attachment #8349218 -
Flags: review?(mozilla)
Comment 3•11 years ago
|
||
Comment on attachment 8349218 [details] [diff] [review]
check-treeSelection.patch
Review of attachment 8349218 [details] [diff] [review]:
-----------------------------------------------------------------
I'll steal this review
Attachment #8349218 -
Flags: review?(mozilla) → review?(mkmelin+mozilla)
Comment 4•11 years ago
|
||
Comment on attachment 8349218 [details] [diff] [review]
check-treeSelection.patch
Review of attachment 8349218 [details] [diff] [review]:
-----------------------------------------------------------------
Can't reproduce, but it looks reasonable. r=mkmelin
Attachment #8349218 -
Flags: review?(mkmelin+mozilla) → review+
Assignee | ||
Comment 5•11 years ago
|
||
(In reply to Magnus Melin from comment #4)
> Comment on attachment 8349218 [details] [diff] [review]
> check-treeSelection.patch
>
> Review of attachment 8349218 [details] [diff] [review]:
> -----------------------------------------------------------------
>
> Can't reproduce, but it looks reasonable. r=mkmelin
Thank you.
Reproducing the issue locally was difficult even. The error was logged AFTER I
displayed the attached e-mail messages, deleted the standalone window, and went to a meeting. When I came back, THEN I noticed the error message(s) that cropped 20 minutes after I left the desk (!)
So it *IS* reproducible, but not easy.
I suspect some kind of left-over callback triggered by regularly recurring event or something that invoked this processing associated with the deletion of a message, but not
exactly sure what it is. (Or can it be a spam filter that deletes spams in the
incoming messages downloaded regularly. Sound like it. There is no selection of message then.)
Maybe if we can dump the JS stack in detail when the problem is noticed, it would have been easy to spot the cause. Maybe the US interpreter should be told to dump the JS stack in
meaningful manner by a user selectable flag or something. I know there is a gdb method, but that sounds an awful overhead for a casual tester like mine :-(
This could be a Request-for-Enhancement.
I put the checkin-needed keyword.
Keywords: checkin-needed
Assignee | ||
Comment 6•11 years ago
|
||
Correction.
[OLD]
Maybe the US interpreter should be told to dump the JS stack in
meaningful manner by a user selectable flag or something. I know there is a gdb method, but that sounds an awful overhead for a casual tester like mine :-(
[NEW]
Maybe the *JS* interpreter should be told to dump the JS stack in
meaningful manner by a user selectable flag or something. I know there is a gdb method, but that sounds an awful overhead for a casual tester like *me* :-(
The default font sizes for the web browser could be made larger for people with
bad eyesight :-)
Comment 7•11 years ago
|
||
Status: NEW → RESOLVED
Closed: 11 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Target Milestone: --- → Thunderbird 29.0
You need to log in
before you can comment on or make changes to this bug.
Description
•