Chrome crash, "Aw, Snap!" error
xfd opened this issue · comments
Chrome version: 32.0.1700.77
moment.js version: 2.5.0
moment-timezone.js version: 0.0.3
Run below code in Chrome browser (multiple page refreshes could be required to reproduce error):
<!DOCTYPE html>
<html>
<head>
<script src="moment.js">
</script>
<script src="moment-timezone.js">
</script>
<script src="moment-timezone-data.js">
</script>
</head>
<body>
<script>
"use strict";
for(var i = 0; i < 100; i++) {
moment(1405461600000);
moment().tz("America/North_Dakota/Beulah");
}
</script>
</body>
</html>
This has something to do with JS execution optimizations. If you change order of properties in moment(), makeMoment() function call to the same as in moment.utc() function:
{
_useUTC : false,
_isUTC : false,
_l : lang,
_i : input,
_f : format,
_strict : strict
}
problem is gone. I think this is bug in Chrome, but you can fix it easily in your library.
You can report this with chrome too. Patches are welcome :)
For what it's worth, I can confirm a similar intermittent error on Chrome 32.0.1700.77 that did not happen in any Chrome version prior. With moment.js 2.1.0, I can prevent the error in a similar way, by replacing the block
moment = function (input, format, lang) {
return makeMoment({
_i : input,
_f : format,
_l : lang,
_isUTC : false
});
};
with
moment = function (input, format, lang) {
var h = {};
h._i = input;
h._f = format;
h._l = lang;
h._isUTC = false;
return makeMoment(h);
};
@xfd have you reported this to the Chrome/Chromium/V8 projects?
Hello,
I would like to know when this fix will be released, and new builds will be available.
We use moment.js in our products (cs-cart.com) and want to fix the Chrome 32 bug as soon as possible, because it is very critical for our customers.
Thanks!
Borrowed the patch from @tatey, and we're back in service in production. Thanks!!!
@ichernev Thanks a lot!
@alexions Released 2.5.1
Geez this was hard to track down. The crash was so rare, and sometimes instead of crashing it would throw a stack overflow error, but the stack trace was not deep and never in the same place.
Thank you so much!! I was trying to figure this out and then I noticed all the timer fired events coming from moment and then figured I'd look there.
Did anyone report this to chrome as a bug? I think we should still commit it as a bug as it was pretty crazy to get a random tab crash.
@niemyjski I agree, the patch fixes the issue here, but there is another underlying problem being masked. When reading the patch I wonder why the patch works. @tatey do you happen to know more about this or was it more of a trial by error thing?
It was trial by error and @xfd's comments.
I have a crash id, but I have nothing else to follow it up with.
It was affecting our widget in a partner's website (http://www.sydneyfestival.org.au/2014/Family/Band-of-Magicians/) which has since been fixed.
I tried to re-create the problem in a single document, but couldn't get Chrome v32 to crash. I think it's the combination of everything on that page.
The only thing left to do is to spin up a whole new environment and make it publicly accessible. I just don't have the capacity to do that at the moment.
I was really hoping other people might have been able to submit bug reports to the Chromium project instead.
On 28 Jan 2014, at 10:17 am, Dan Simpson notifications@github.com wrote:
@niemyjski I agree, the patch fixes the issue here, but there is another underlying problem being masked. When reading the patch I wonder why the patch works. @tatey do you happen to know more about this or was it more of a trial by error thing?
—
Reply to this email directly or view it on GitHub.
Thanks @tatey. I wasn't sure which came first. I'll see about submitting an issue to the chrome project.
@xfd can you package up your reproduction files or throw them in a repository? This way we have something to give that reproduces the error.
I just wanted to let you all know that I think this still could be an issue. I just hit the Awe snap issue on staging (praying to god I don't see it again).
Files required to reproduce bug: https://dl.dropboxusercontent.com/u/68860725/chrome_v32_bug_reproduce.zip. It not always occurs at first time, refresh page multiple times. I've only reported bug by Chrome's built-in form, so I don't have id or link. Probably this is V8 JS optimization issue, so should be reported there.
I submitted an issue to chromium. I'll update with the issue if it is made visible.
Alright, it was considered a duplicate and merged with this issue: https://code.google.com/p/chromium/issues/detail?id=333594
You are awesome. Save my day! :) Thanks.
I'm still seeing this crash with the latest version of chrome and momentjs.
I face the same problem,
TypeError: Object function (input, format, lang, strict) {
var c;
if (typeof(lang) === "boolean") {
strict = lang;
lang = undefined;
}
// object construction must be done this way.
// https://github.com/moment/moment/issues/1423
c = {};
c._isAMomentObject = true;
c._i = input;
c._f = format;
c._l = lang;
c._strict = strict;
c._isUTC = false;
c._pf = defaultParsingFlags();
return makeMoment(c);
} has no method 'format'
@mjebrini you're trying to call moment.format()
instead of moment().format()
I had this same crash with 2.13.0 version when using it through webpack. I wasn't able to pinpoint the exact reason for the crash. I'm importing the package through NPM and after calling some hundreds of time in loop moment.utc(0)
I got Chrome 50 crashing (Firefox 45 and Safari 9.1 works correctly).
Also seems that if I just import moment in html using <script>
and then using webpack
externals: { 'moment':'moment' }
it works fine. Also if I removed all references to the moment.js from the page, it worked without crash, so it must be something related to how webpack/npm and work together.
Crashed in chrome 52
Use with webpack and react
Anyone Tell how to solve the aw snap issue ? I'm using angular 7 project and python backend, whenever I hit API and waiting for response the page will be shown "aw sanp"