Chrome crash, "Aw, Snap!" error #1423

xfd opened this Issue Jan 17, 2014 · 26 comments


None yet

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>
        <script src="moment.js">
        <script src="moment-timezone.js">
        <script src="moment-timezone-data.js">
            "use strict";
            for(var i = 0; i < 100; i++) {

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


    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?

@tatey tatey added a commit to thebestday/moment that referenced this issue Jan 20, 2014
@tatey tatey Change object construction to prevent Chrome v32 crashing.
Suspected JS execution optimizations in v32 is causing the browser to
throw "Aw, Snap".

See moment#1423

@bblack I've only reported it via Chrome's "Report an issue…" form.



I would like to know when this fix will be released, and new builds will be available.
We use moment.js in our products ( and want to fix the Chrome 32 bug as soon as possible, because it is very critical for our customers.



Borrowed the patch from @tatey, and we're back in service in production. Thanks!!!


@alexions I'll try to make an earlier release later today. In the mean time you can use the patch in #1429.


@ichernev Thanks a lot!

@ichernev ichernev closed this Jan 22, 2014

@alexions Released 2.5.1


@xfd Do you have a link to the bug report? I can attach my crash ID to the report and reference it in #1429.

I've tried to isolate the issue without our production stack and haven't had any success. We use moment in a "widget" which gets injected into third party websites through an iframe.


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?


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: 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:


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.
    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: {
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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment