Closed Bug 1401897 Opened 8 years ago Closed 8 years ago

Mail broken in current build from source 2.54a1

Categories

(SeaMonkey :: MailNews: Message Display, defect)

SeaMonkey 2.54 Branch
defect
Not set
critical

Tracking

(seamonkey2.54 fixed, seamonkey2.55 fixed)

RESOLVED FIXED
seamonkey2.55
Tracking Status
seamonkey2.54 --- fixed
seamonkey2.55 --- fixed

People

(Reporter: se014a0001, Assigned: frg)

References

Details

Attachments

(2 files)

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0 SeaMonkey/2.54a1 Lightning/5.9a1 Build ID: 20170916003001 Steps to reproduce: 1. Built seamonkey 2.54a1 for Linux x86_64 from source so that I could apply 1392929-thisisnotafix.patch and 1394101-yield.patch 2. Launched seamonkey 3. Clicked on mail icon on status bar Actual results: 1. Folder pane appeared 2. No messages appeared (and none were downloaded) When I click on a folder, seamonkey crashes. Even if I do nothing and don't open the mail window Seamonkey crashes after a while. Expected results: Messages should appear and should have been downloaded. This problem doesn't exist in the latest successful nightly build (the one I'm using to submit this report). However, in this version, it is impossible to attach files in e-Mail compose. I first noticed it the day before yesterday (19th September).
Terminal output from launch to crash (in this case before I could get to the e-Mail) ____________________________________________________________________________________ JavaScript error: file:///home/dme/comm-central/obj-sm-release/dist/bin/components/offlineStartup.js, line 165: ReferenceError: assignment to undeclared variable debug 1505983904276 addons.xpi WARN Error loading bootstrap.js for fxdevtools-adapters@mozilla.org: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import]" nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)" location: "JS frame :: resource://gre/modules/addons/XPIProvider.jsm -> file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/fxdevtools-adapters@mozilla.org/bootstrap.js :: <TOP_LEVEL> :: line 9" data: no] Stack trace: resource://gre/modules/addons/XPIProvider.jsm -> file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/fxdevtools-adapters@mozilla.org/bootstrap.js:9 < loadBootstrapScope()@resource://gre/modules/addons/XPIProvider.jsm:4349 < callBootstrapMethod()@resource://gre/modules/addons/XPIProvider.jsm:4416 < startup()@resource://gre/modules/addons/XPIProvider.jsm:2225 < callProvider()@resource://gre/modules/AddonManager.jsm:263 < _startProvider()@resource://gre/modules/AddonManager.jsm:730 < startup()@resource://gre/modules/AddonManager.jsm:897 < startup()@resource://gre/modules/AddonManager.jsm:3081 < observe()@addonManager.js:65 1505983904281 addons.xpi WARN Add-on fxdevtools-adapters@mozilla.org is missing bootstrap method startup JavaScript warning: resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/%7B065ee92a-ad57-42a2-b6d5-466b6fd8e24d%7D.xpi!/bootstrap.js, line 27: expression closures are deprecated 1505983904297 addons.xpi WARN Error loading bootstrap.js for {065ee92a-ad57-42a2-b6d5-466b6fd8e24d}: SyntaxError: missing ( after for (resource://gre/modules/addons/XPIProvider.jsm -> jar:file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/%7B065ee92a-ad57-42a2-b6d5-466b6fd8e24d%7D.xpi!/bootstrap.js:654:7) JS Stack trace: loadBootstrapScope@XPIProvider.jsm:4349:9 < callBootstrapMethod@XPIProvider.jsm:4416:9 < startup@XPIProvider.jsm:2225:13 < callProvider@AddonManager.jsm:263:12 < _startProvider@AddonManager.jsm:730:5 < startup@AddonManager.jsm:897:9 < startup@AddonManager.jsm:3081:5 < observe@addonManager.js:65:9 1505983904301 addons.xpi WARN Add-on {065ee92a-ad57-42a2-b6d5-466b6fd8e24d} is missing bootstrap method startup JavaScript error: jar:file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D.xpi!/lib/child/bootstrap.js?0.003230176291033726&info=%7B%22addonID%22%3A%22%7Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7D%22%2C%22addonVersion%22%3A%222.9.1%22%2C%22addonRoot%22%3A%22jar%3Afile%3A%2F%2F%2Fhome%2Fdme%2F.mozilla%2Fseamonkey%2Fl29amx7n.default%2Fextensions%2F%257Bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%257D.xpi!%2F%22%2C%22addonName%22%3A%22adblockplus%22%2C%22application%22%3A%22seamonkey%22%2C%22applicationVersion%22%3A%222.54a1%22%2C%22platform%22%3A%22gecko%22%2C%22platformVersion%22%3A%2257.0a1%22%7D, line 25: NS_ERROR_FILE_NOT_FOUND: Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import] JavaScript warning: jar:file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/%7Bf13b157f-b174-47e7-a34d-4815ddfdfeb8%7D.xpi!/components/venkman-service.js, line 344: expression closures are deprecated JavaScript error: jar:file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/%7Bf13b157f-b174-47e7-a34d-4815ddfdfeb8%7D.xpi!/components/venkman-service.js, line 127: TypeError: Components.interfaces.nsIProgrammingLanguage is undefined ### Error loading backend: [Exception... "Could not convert JavaScript argument arg 0 [nsIComponentManager.getClassObject]" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: file:///home/dme/.mozilla/seamonkey/l29amx7n.default/extensions/%7Be2fda1a4-762b-4020-b5ad-a41df1933103%7D/components/calBackendLoader.js :: loadBackend :: line 54" data: no] JavaScript error: file:///home/dme/comm-central/obj-sm-release/dist/bin/components/nsSuiteGlue.js, line 197: TypeError: LoginManagerParent.init is not a function 1505983913783 addons.webextension.{73a6fe31-595d-460b-a920-fcc0f8843232} WARN Loading extension '{73a6fe31-595d-460b-a920-fcc0f8843232}': Reading manifest: Error processing permissions.0: Value "contextMenus" must either: must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], must either [be one of ["<all_urls>"], match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], be one of ["browserSettings"], be one of ["cookies"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "storage", "unlimitedStorage"], be one of ["contextualIdentities"], be one of ["downloads", "downloads.open"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/ 1505983913789 addons.webextension.{73a6fe31-595d-460b-a920-fcc0f8843232} WARN Loading extension '{73a6fe31-595d-460b-a920-fcc0f8843232}': Reading manifest: Error processing permissions.3: Value "tabs" must either: must either [be one of ["clipboardRead", "clipboardWrite", "geolocation", "idle", "notifications"], must either [be one of ["<all_urls>"], match the pattern /^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$/, or match the pattern /^file:\/\/\/.*$/], be one of ["browserSettings"], be one of ["cookies"], be one of ["topSites"], be one of ["webNavigation"], or be one of ["webRequest", "webRequestBlocking"]], be one of ["alarms", "storage", "unlimitedStorage"], be one of ["contextualIdentities"], be one of ["downloads", "downloads.open"], be one of ["management"], be one of ["privacy"], be one of ["proxy"], be one of ["nativeMessaging"], be one of ["theme"], or match the pattern /^experiments(\.\w+)+$/ JavaScript error: resource://gre/modules/ExtensionParent.jsm, line 148: TypeError: this.global.tabTracker is undefined JavaScript error: resource://gre/modules/ExtensionParent.jsm, line 148: TypeError: this.global.tabTracker is undefined JavaScript error: resource://devtools/client/framework/gDevTools.jsm, line 160: TypeError: browser[name] is undefined JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/client/framework/browser-menus.js, line 223: TypeError: menu is null JavaScript error: resource://gre/modules/XPCOMUtils.jsm, line 333: NS_ERROR_FILE_NOT_FOUND: Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import] JavaScript error: resource:///modules/jsmime.jsm, line 66: ReferenceError: assignment to undeclared variable TextDecoder ExceptionHandler::GenerateDump cloned child 14666 ExceptionHandler::SendContinueSignalToChild sent continue signal to child ExceptionHandler::WaitForContinueSignal waiting for continue signal...
The nightly build from 16th September 2017 is the last one that works. All the more recent builds, plus any I do myself, crash.
> JavaScript error: file:///home/dme/comm-central/obj-sm-release/dist/bin/components /offlineStartup.js, line 165: ReferenceError: assignment to undeclared variable debug This is a problem. > line 197: TypeError: LoginManagerParent.init is not a function This might be a new problem. Mozilla shuffled around some functions but I thought it would still work. The new code in Fx seems to save a few microseconds for them but is imho just a lot more complicated... > venkman-service.js I am seeing lots of extension errors. The old debugger is dead. Please remove it and / or try in safe mode. > JavaScript error: resource:///modules/jsmime.jsm, line 66: ReferenceError: assignment to undeclared variable TextDecoder This is probably fixed now. Could you do a new build.
> line 197: TypeError: LoginManagerParent.init is not a function Might need a port of bug 1358921
Blocks: 1402671
I had already removed Venkman, and indeed all the other extensions, but it was still broken. I'm trying another build now. I may be some time ...
It's still broken. Selecting Mail brings up this screen-shot. Notice that the senders are listed but the subjects are not. I hit the message list scroll-bar and it crashes.
This is the stderr from starting in --safe-mode up to the crash. _________________________________________________________________ JavaScript error: file:///home/dme/comm-central/obj-sm-release/dist/bin/components/offlineStartup.js, line 165: ReferenceError: assignment to undeclared variable debug JavaScript error: file:///home/dme/comm-central/obj-sm-release/dist/bin/components/nsSuiteGlue.js, line 197: TypeError: LoginManagerParent.init is not a function JavaScript error: chrome://communicator/content/viewZoomOverlay.js, line 15: TypeError: Services.contentPrefs is undefined JavaScript error: resource://devtools/client/framework/gDevTools.jsm, line 160: TypeError: browser[name] is undefined JavaScript error: resource://devtools/shared/base-loader.js -> resource://devtools/client/framework/browser-menus.js, line 223: TypeError: menu is null JavaScript error: resource://gre/modules/XPCOMUtils.jsm, line 333: NS_ERROR_FILE_NOT_FOUND: Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import] Document about:sessionrestore loaded successfully JavaScript error: file:///home/dme/comm-central/obj-sm-release/dist/bin/components/nsUrlClassifierListManager.js, line 69: NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService] JavaScript error: file:///home/dme/comm-central/obj-sm-release/dist/bin/components/nsUrlClassifierListManager.js, line 69: NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService] Document about:blank loaded successfully JavaScript error: resource:///modules/jsmime.jsm, line 66: ReferenceError: assignment to undeclared variable TextDecoder JavaScript error: chrome://communicator/content/viewZoomOverlay.js, line 15: TypeError: Services.contentPrefs is undefined JavaScript error: resource:///modules/jsmime.jsm, line 66: ReferenceError: assignment to undeclared variable TextDecoder JavaScript error: chrome://messenger/content/msgHdrViewOverlay.js, line 45: NS_ERROR_XPC_GS_RETURNED_FAILURE: Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService] JavaScript error: chrome://messenger/content/msgHdrViewOverlay.js, line 238: ReferenceError: can't access lexical declaration `MsgHdrViewObserver' before initialization Error loading start page. JavaScript error: chrome://messenger/content/msgMail3PaneWindow.js, line 1210: ReferenceError: can't access lexical declaration `kMouseButtonRight' before initialization ExceptionHandler::GenerateDump cloned child 8041 ExceptionHandler::SendContinueSignalToChild sent continue signal to child ExceptionHandler::WaitForContinueSignal waiting for continue signal... __________________________________________________________________________________
Jorg, most of it is SeaMonkey breakage but this is mailnews\mime\src\jsmime.jsm: > JavaScript error: resource:///modules/jsmime.jsm, line 66: ReferenceError: assignment to > undeclared variable TextDecoder The surrounding code looks ugly. Is FakeTextDecoder, FallbackTextDecoder or RealTextDecoder used somewhere? The real TextDecoder is in toolkit?
Flags: needinfo?(jorgk)
Attached patch 1401897-varconstmail.patch — — Splinter Review
I actually need to do a new build and see if it fully fixes the problem. But these changes are needed for sure. Do not know which bug broke it finally in 54 but there were some new compartment changes for jsms.
Assignee: nobody → frgrahl
Status: UNCONFIRMED → ASSIGNED
Ever confirmed: true
Attachment #8911548 - Flags: review?(iann_bugzilla)
Severity: normal → critical
(In reply to Frank-Rainer Grahl (:frg) from comment #8) > most of it is SeaMonkey breakage but this is mailnews\mime\src\jsmime.jsm: > > JavaScript error: resource:///modules/jsmime.jsm, line 66: ReferenceError: assignment to > > undeclared variable TextDecoder > The surrounding code looks ugly. Is FakeTextDecoder, FallbackTextDecoder or > RealTextDecoder used somewhere? The real TextDecoder is in toolkit? This is new code written by expert Joshua Cranmer so it can't be ugly. I've looked at it long and hard in bug 1401528 and couldn't make sense of it. In the end I landed a fix in that bug. See whether that helps you. If it were undefined, bug 1394556 would have caught it, so there is something going on we both don't understand, most likely a "global mixup".
Flags: needinfo?(jorgk) → needinfo?(Pidgeot18)
Aceman, you were going to look at bug 1401528, so perhaps you can take a look here.
Flags: needinfo?(acelists)
> This is new code written by expert Joshua Cranmer so it can't be ugly. Opps. Before I am banned lets call it confusing. A comment would have helped :) TextDecoder is not declared here. Maybe it was mean't as an overlay for the existing fuction which now somehow fails ebcause of changes in Gecko code. Looking at Bug 1401528 it might be the same cause.
I think TextDecoder in an in-build JS global: https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder and Joshua is messing with it. A comment would really have been helpful, especially given that that trick blew up in bug 1401528: ReferenceError: assignment to undeclared variable TextDecoder at resource:///modules/jsmime.jsm:66 [log…]
In a PM, FRG suggested: +var TextDecoder = Components.utils.getGlobalForObject( + Components.utils.import("resource://gre/modules/Services.jsm", {})); + var RealTextDecoder = TextDecoder; + I added that to jsmime.js and TB still runs ;-) IMHO this looks like the right approach since we're saying where the global comes from.
Comment on attachment 8911548 [details] [diff] [review] 1401897-varconstmail.patch r=me, nice catch that kMsgForwardInline is not used.
Attachment #8911548 - Flags: review?(iann_bugzilla) → review+
(In reply to Jorg K (GMT+2) from comment #14) > +var TextDecoder = Components.utils.getGlobalForObject( > + Components.utils.import("resource://gre/modules/Services.jsm", {})); Maybe that's not right, we don't want to declare another TextDecoder but use the one from the module. Perhaps more like this: https://hg.mozilla.org/mozilla-central/rev/9109b1f49d23#l5.13 or this: https://hg.mozilla.org/mozilla-central/rev/9109b1f49d23#l6.11
jsmscope is declared as: const jsmScope = Cu.import("resource://gre/modules/Services.jsm", {}); So should be identical to the second one. I am unsure about the curly brackets and const. A little over my head or better over my knowledge. If const we couldn't modify it or could we?
So you're saying: const {TextDecoder} = Components.utils.getGlobalForObject( Components.utils.import("resource://gre/modules/Services.jsm", {})); Maybe without the const then?
so does https://dxr.mozilla.org/comm-central/source/mailnews/mime/src/jsmime.jsm#6 need changing to be: const jsmScope = Components.utils.import("resource://gre/modules/Services.jsm", {}); then add lines const { Services } = jsmScope; const { TextDecoder } = Components.utils.getGlobalForObject(jsmScope);
That's what we're debating, but bug 1401528 is the better place for that discussion.
(In reply to Jorg K (GMT+2) from comment #20) > That's what we're debating, but bug 1401528 is the better place for that > discussion. So why comments 14, 16 to 18 in this bug then?
(In reply to Ian Neal from comment #21) > So why comments 14, 16 to 18 in this bug then? They continued from comment #10, comment #11 and comment #13. FRG asked me to try something in the context of this bug and I reported here. Just trying to be helpful, sorry for any inconvenience caused. I'll remove the NI here and we'll continue in the other bug.
Flags: needinfo?(acelists)
Flags: needinfo?(Pidgeot18)
Pushed by frgrahl@gmx.net: https://hg.mozilla.org/comm-central/rev/61251d6ba888 Fix fallout from bug 589199 and declare globally used constants as vars. r=IanN
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Comment on attachment 8911548 [details] [diff] [review] 1401897-varconstmail.patch Yeahh lets close this one and continue in bug 1401528 for both products. I might need to reopen it if I find more problems in SeaMonkey code but I hope not. [Approval Request Comment] Regression caused by (bug #): Bug 589199 Bug 1186409 User impact if declined: mail broken Testing completed (on m-c, etc.): c-c Risk to taking this patch (and alternatives if risky): none already broken. String changes made by this patch: none
Attachment #8911548 - Flags: approval-comm-beta?
Target Milestone: --- → seamonkey2.55
Comment on attachment 8911548 [details] [diff] [review] 1401897-varconstmail.patch a=me
Attachment #8911548 - Flags: approval-comm-beta? → approval-comm-beta+
What about setting pref jsloader.shareGlobal to false for the time being as we did in bug 1401528?
2.54+ has so many problems I am just waiting for the final fix. Was about to work on some other problems today but... :) And without working tests unlike Thunderbird I rather catch new errors now. If someone is testing SeaMonkey he/she can set it for themselves.
I'm building Seamonkey now.
Mail works for me now. Bug 1394144 should break autocomplete pretty hard but I don't have time for this today. Maybe next weekend. Might be best to comment out the LoginManagerParent.init() call for now.
Seamonkey Mail is still broken for me. The Mail screen and the stderr meesages up to the crash haven't changed from the safe-mode example above. Is there a delay before the changed files are available for download through 'python client.py checkout'?
(In reply to Jorg K (GMT+2) from comment #13) > I think TextDecoder in an in-build JS global: > https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder > and Joshua is messing with it. It's not a builtin global in the same sense of Object or Function, which are defined by SpiderMonkey. It's a property that's added to all the relevant globals (the DOM global of Window, the WorkerScope global, and the XPConnect global). I think you probably understood the difference, but I want to be clear since the terminology may confuse some people. > A comment would really have been helpful, especially given that that trick > blew up in bug 1401528: Well, I did say that I'm polyfilling TextDecoder to support non-encoding-spec charsets in the comment above it. :-) Although I can see why people might not realize the context. (In reply to Jorg K (GMT+2) from comment #14) > In a PM, FRG suggested: > > +var TextDecoder = Components.utils.getGlobalForObject( > + Components.utils.import("resource://gre/modules/Services.jsm", {})); > + > var RealTextDecoder = TextDecoder; > + > > I added that to jsmime.js and TB still runs ;-) > > IMHO this looks like the right approach since we're saying where the global > comes from. Replacing TextDecoder with this.TextDecoder in jsmime.jsm should work, I think? It would use the TextDecoder on the current global (so no need for cross-global worries), but I'm not 100% sure how that would interact with the subscript loader. It might equally be apropos to move subscript load until after the TextDecoder polyfill. (In reply to Jorg K (GMT+2) from comment #10) > This is new code written by expert Joshua Cranmer so it can't be ugly. I do write ugly code sometimes (look up the C++-JS cross-language inheritance code I wrote several years back for an abysmal example). That said, I generally do try to document code that I expect others to understand, although I'm very apt to err in my estimation of others' background knowledge.
(In reply to David Edwards from comment #31) > Is there a delay before the changed files are available for download through > 'python client.py checkout'? No, they are available immediately after check-in.
The nightly Seamonkey 2.55a1 from 24 September still crashes. In spite of my 'python client.py checkout' I noticed that my mailnews/mime/src/jsmime.jsm hadn't changed so I changed it by hand, thus. _________________________________________________ var RealTextDecoder = this.TextDecoder; function FallbackTextDecoder(charset, options) { try { return new RealTextDecoder(charset, options); } catch (e) { return new FakeTextDecoder(charset, options); } } this.TextDecoder = FallbackTextDecoder; _________________________________________________ I just added 'this.' on lines 57 and 66. My build now works for me. BTW, I'm trying to build from the latest sources, so why does my source build still say it's 2.54a1 rather than 2.55a1?
Seamonkey 2.55a1 25th September is also broken.
(In reply to David Edwards from comment #34) > In spite of my 'python client.py checkout' I noticed that my > mailnews/mime/src/jsmime.jsm hadn't changed so I changed it by hand, thus. That hasn't been committed to the repository. We're still discussing it in bug 1401528.
If it's not committed, you can't call this bug fixed! Unrelated to the crashes, but in the initial description of this bug, is the fact that you cannot attach files to composed mails. This is still true and it renders the e-Mail client pretty much useless.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Please let this stay fixed. The main problem with the undeclared variables which directly contributed to the problem has been fixed. 2.54 has other problems and they are linked in Bug 1394144. I already put bug 1401528 in there too and would rather not have another open bug to track things. 2.55 does not yet have a meta bug but will be when the current tree adds other breakages.
Status: REOPENED → RESOLVED
Closed: 8 years ago8 years ago
Resolution: --- → FIXED
Apologies. I do not want the failure of the mail attachment process to be lost sight of, but I did not understand how you co-ordinate these issues.
David, just set pref jsloader.shareGlobal to false (and restart) and you're in business.
Thanks Jorg. Doing this from 2.55a1!
No longer blocks: 2.56BulkMalfunctions
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: