Skip to content

ufuzz failure #5756

@alexlamsl

Description

@alexlamsl
// original code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;

function f0(b_2, b_1, a_1) {
    try {
        {
            var let_2 = function f1() {
                try {
                    {
                        var brake4 = 5;
                        while ([ ..."" + b_1 ] && --brake4 > 0) {
                            var brake5 = 5;
                            do {
                                L13363: {
                                    const arguments_1 = (c = c + 1) + ((c = 1 + c, 
                                    ((b_1 && (b_1[c = 1 + c, "a" < -3 ^ [ , 0 ][1] <= "b" && ("" << 25) / (2 == ([ , 0 ].length === 2))] += -1 || "undefined")) === "function" - []) / ("object" >> ([ , 0 ].length === 2) >> (-5 < 22))) ? (c = 1 + c, 
                                    (-4 >= true) >> (Infinity != Infinity) >> (2 && 25) / ("c" % 1)) : (c = 1 + c, 
                                    b_1 && (b_1.null += (-3 == "") < (b_2 && (b_2.set = [] >> {})) >= /[a2][^e]+$/ + undefined - undefined / 38..toString())));
                                    let arguments = delete b;
                                    c = 1 + c, (undefined >= "c" > ("object" < "foo")) >> ("undefined" !== 4 === (a_1 /= "function" * 3));
                                    c = 1 + c, (/[a2][^e]+$/ !== true ^ (c = c + 1, 
                                    "number")) === (a_1 += 0 >>> {} > (5 == -1));
                                    c = 1 + c, (arguments_1 && (arguments_1.foo = (null & NaN) >> ("function" < "a"))) === -"" > (23..toString() | "c");
                                    c = 1 + c, ((c = c + 1, 5) < (-1 >= "number")) % ("number" >>> -4, 
                                    "a" >= null);
                                }
                            } while (/[abc4]/.test(((c = c + 1) + (b_1 && typeof b_1.get == "function" && --_calls_ >= 0 && b_1.get([])) || b || 5).toString()) && --brake5 > 0);
                        }
                    }
                } finally {
                    {
                        var brake11 = 5;
                        L13364: while (a++ + (1 === 1 ? a : b) && --brake11 > 0) {
                            try {
                                {
                                    var brake13 = 5;
                                    while ((c = 1 + c, (b_1 &= -5 || 4) < (-0 ^ 4) && (-5 ^ NaN) < (/[a2][^e]+$/ != 24..toString())) && --brake13 > 0) {
                                        c = 1 + c, (true & []) >> (b_2 && (b_2.async %= "c" / -4)) || -5 >= -0 ^ this === -2;
                                    }
                                }
                            } finally {}
                        }
                    }
                }
            }("b", 2);
        }
    } catch (c_2) {
        L13365: for (var brake15 = 5; new function() {
            this[-0] += ((/[a2][^e]+$/ && 24..toString()) - (Infinity, "object") > (null / -1 | ("a", 
            "c"))) % (([ , 0 ].length === 2 === 2) - ([ , 0 ].length === 2 == Infinity) >> (c_2 = ("number" | NaN) * (c = c + 1, 
            "b"))) == ((NaN != 3 != "" >> Infinity) - (b_2 && (b_2[(c = c + 1) + ((bar, c_2) => (c = 1 + c, 
            (bar -= (b_1 && (b_1[c = 1 + c, ((23..toString(), /[a2][^e]+$/) ^ "" << -0) / ("" > undefined, 
            "object" / 0)] += "" == [])) !== "b" >= 22) - (delete 2 == (25 === {}))))((c = 1 + c, 
            (22 === "function" & 1 !== NaN) - (-5 & 22 ^ "number" >>> -4)), 2)] = "b" - {} | "c" >= 23..toString())) === (c = c + 1, 
            NaN) >> (22 != []) >>> (-0 % [ , 0 ][1] || 5 === -1)) === (((([ , 0 ][1] & "a") >>> [] + null) / ("number" - 22 >> (null | 22)), 
            (false ^ 4) <= (true ^ -4) <= (1 % "undefined" <= undefined + 38..toString())) & (1 ^ -4 ^ -2 * 3 ^ ("bar" % [] && 38..toString() << 3)) % ((({} !== 5) - (-0 | [ , 0 ].length === 2)) / ((true | NaN) === ("function" !== 38..toString()))));
            this.null = (+((("undefined" < "c") >>> void 3) - (([ , 0 ].length === 2 || {}) >> (this !== "c")) >= ((b_2 && (b_2[c = 1 + c, 
            (25 !== -4) < 24..toString() >> NaN & (-4 + [ , 0 ][1] & "undefined" + false)] = 23..toString() || 3)) <= this / "function" !== ("object" == "function" == /[a2][^e]+$/ / false))), 
            ((("function" ^ true ^ 23..toString() !== true) >= (38..toString(), 
            [ , 0 ][1]) >> (c = c + 1, 4)) << (NaN % -5 | -5 == 23..toString()) % ((let_2 && (let_2[c = 1 + c, 
            !(-2 ^ 25 | -1 * undefined)] += Infinity < [ , 0 ][1])) != undefined - "b")) + (((let_2 && (let_2.null &= ("function" & "a") < [] << "bar")) <= -0 + "function" - ("number" >> -1)) + ((-4 == false | -2 >= []) & (24..toString() ^ -4) == (25 == this))));
            this.NaN = (({} & -0) + (b_1 && (b_1.static = 3 ^ [ , 0 ][1])) << (b_1 && (b_1.b ^= ([] | "object") / (c = c + 1, 
            "a"))) < ((let_2 && ([ let_2[(c = c + 1) + (() => (c = 1 + c, ("function" >= 4 & ("a" ^ "number")) >> (25 ^ 25 && false == undefined)))()] ] = [ (c_2 = "function" < this) && 25 / [ , 0 ][1] ])) >= (!{} != 25 * {})) <= ((b_2 && (b_2.b = (Infinity >> 1 === ("object" ^ 2), 
            ([ , 0 ][1] == Infinity) <= ("b" ^ "foo")))) != (b_2 = (b_1 && (b_1.value += (let_2 && (let_2.in = "bar" >= -2)) * (([ , 0 ].length === 2) < -3))) & (undefined & null) / ("bar" + "b")))) % (c = c + 1, 
            b_1 && (b_1[delete b] = -(([ , 0 ].length === 2 && this) >= ("object" || 25)) - ((3 + 5, 
            "object" * 24..toString()) >> (("undefined" ^ 4) < ("", "b")))));
            if (typeof f2 == "function" && --_calls_ >= 0 && f2()) {
                try {
                } finally {
                    c = c + 1;
                    c = 1 + c, (!null, 1 === this) != (let_2 && (let_2[c = 1 + c, 
                    ("" | []) != 24..toString() <= 3 ^ ("function" < "a" ^ "object" * "bar")] |= 5 / undefined)) << (-4 < NaN);
                    L13366: for (var brake22 = 5; (c = 1 + c, ("" >= 4 || ("number" || "undefined")) >= ("number" >> this != -[ , 0 ][1])) && brake22 > 0; --brake22) {
                        c = 1 + c, 22 << "number" !== (-1 && {}) & (c = c + 1, NaN != NaN);
                    }
                }
            } else {
                var bar_2 = 0 === 1 ? a : b, a_1_1 = [].done;
            }
        }("undefined") && brake15 > 0; --brake15) {
            var brake25 = 5;
            L13367: while (++b && --brake25 > 0) {
                var brake26 = 5;
                do {
                    try {
                        if (--b + !(("b" ^ "foo") << (25 >> ([ , 0 ].length === 2)) << (([ , 0 ][1] !== Infinity) >= -1 >> -0))) {
                            --b + !function() {
                            }();
                        }
                    } finally {
                        b *= a;
                        {
                            return a++;
                        }
                    }
                } while ([ , 0 ][1] + "b" <= ("foo" === -1) >= (5 - "" >= +"function") && --brake26 > 0);
            }
        }
        return;
        L13368: {
            L13369: {
                {
                    var brake35 = 5;
                    L13370: while (a++ + (4 in [ ..."" + c_2 ] ? --b + (typeof f3 == "function" && --_calls_ >= 0 && f3`$\`${c = 1 + c, 
                    (a_1 = (a_1 += Infinity < 2) && (let_2 && (let_2.a += [] | "undefined"))) / ((c = c + 1, 
                    "foo") > ("object" != "a"))}${c = 1 + c, (Infinity || [ , 0 ].length === 2) >>> (-1 ^ NaN) ^ "undefined" % "number" << (4 && "foo")}tmpl${c = 1 + c, 
                    -(let_2 && (let_2[--b + (typeof b_2_1 === "object")] = (-4 | "object") >>> 25 % this))}`) : a++ + (0 === 1 ? a : b)) && --brake35 > 0) {
                        var brake36 = 5;
                        L13371: while (((c = 1 + c, 24..toString() >> 25 != -2 > true, 
                        (3 == 0) / (c = c + 1, -1)) || 3).toString()[c = 1 + c, 
                        (b_1 && (b_1[--b + ((c = 1 + c, -0 < 38..toString() < (undefined < "object") != (c_2 && (c_2[c = 1 + c, 
                        (("" || -2) << !0) / ((c = c + 1, 25) ^ ("number" || 2))] = "number" > -5)) >= 2 >> -5) || 8).toString()[c = 1 + c, 
                        {} >>> ([ , 0 ].length === 2) >> (b_1 && (b_1[c = 1 + c, 
                        "number" >>> Infinity > (1 === "object") < (25 & -4 & (c = c + 1, 
                        -2))] = 5 ^ [ , 0 ].length === 2)) ^ +5 <= [ , 0 ][1] + 5]] += ("foo" + -0) % (false - this))) === (-1 <= 0 === ("b" == "a"))] && --brake36 > 0) {
                            L13372: {
                            }
                        }
                    }
                }
                var a_1 = void ((-1 ^ undefined) / ("object" != -2) * ((/[a2][^e]+$/ != "b") / ("c" >= "bar"))), bar_2 = --b + (a++ + [ (c = 1 + c, 
                c = c + 1, -"foo" && (3, 4)) ].length);
                {
                    L13373: {
                    }
                }
            }
            {
                var brake41 = 5;
                while ([ , 0 ][1] && --brake41 > 0) {
                    return;
                }
            }
        }
    } finally {
        {
            var a_2 = function bar_2(bar_1, async_2) {}();
        }
        if ("a" in [ (c = c + 1) + (/[abc4]/.test(((([ , 0 ].length === 2) >> "bar" && (c = c + 1, 
        24..toString())) == ("b" !== undefined ^ (undefined ^ -4)) || b || 5).toString()) || 9).toString()[a++] ]) {} else {}
        if (a++ + b_2) {
            var b_2 = function* b_1_1() {
                {
                    var brake49 = 5;
                    do {
                        if (typeof f2 == "function" && --_calls_ >= 0 && f2([ , 0 ][1], (c = 1 + c, 
                        (0 & [ , 0 ].length === 2) % (c = c + 1, {}) > (("b" == -5) > (undefined === 2))))) {
                            c = 1 + c, (-5, "bar") >= (undefined !== "a") === (5 - NaN ^ (a_2 && (a_2[c = 1 + c, 
                            (-5 >>> 5 ^ -5 !== ([ , 0 ].length === 2)) <= (~0, [ , 0 ].length === 2 && -2)] = 2 / ([ , 0 ].length === 2))));
                        } else {
                            var brake52 = 5;
                            do {
                                c = 1 + c, ((a_2 += "undefined" && "c") <= (/[a2][^e]+$/ != {})) >>> ("number" + "foo" | "undefined" % -5);
                            } while ((c = 1 + c, (3 === [ , 0 ][1] && 38..toString() ^ /[a2][^e]+$/) > (-2 >>> -2 < ("object" != "b"))) && --brake52 > 0);
                        }
                    } while ((0 === 1 ? a : b) && --brake49 > 0);
                }
            }(-4).next();
        } else {
            var brake54 = 5;
            L13374: do {
                var b_2 = --b + (let_2 /= ([ , 0 ].length === 2) in [ Infinity - /[a2][^e]+$/ >>> "b" / "a" == (false || 2 || [ , 0 ].length === 2 | NaN) ]), bar_2 = --b + (b_2 = a++ + a--);
            } while ("c" && --brake54 > 0);
        }
    }
    {
        var expr56 = (c = c + 1) + function b_1_2() {
            {
                var brake57 = 5;
                L13376: while ((c = c + 1) + (typeof f3 == "function" && --_calls_ >= 0 && f3`${typeof foo != "symbol"}`) && --brake57 > 0) {
                    if ("undefined") {}
                }
            }
            {
                var brake61 = 5;
                do {
                    {}
                } while ((c = c + 1) + {
                    undefined: a++ + --b,
                    var: b ^= a
                } && --brake61 > 0);
            }
        };
        L13375: for (let key56 in expr56) {
            c = 1 + c;
            var yield_2 = expr56[key56];
            c = c + 1;
        }
    }
    {
        var brake65 = 5;
        L13377: while ((0 === 1 ? a : b) && --brake65 > 0) {
            {
                var arguments = function f2(b_2, foo_1, b_1) {
                    function f3(arguments, undefined_1) {
                    }
                    var let_2 = f3((c = 1 + c, (24..toString() === false) + (23..toString() <= -4) << (38..toString() ^ -5) / (4 % "b")), -1, (c = 1 + c, 
                    (24..toString() === ([ , 0 ].length === 2)) % (1 * -4) ^ (let_2 && (let_2.get ^= 23..toString() ^ false)) * ("number" | "c")));
                    function f4() {
                    }
                    var a = f4(typeof (c = 1 + c, (c = c + 1, 38..toString() ^ -2) << void ([ , 0 ].length === 2) + (0 == -1)));
                }();
            }
        }
    }
}

export var undefined_1 = f0();

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0;

function f0(f, o, t) {
    try {
        var n = function() {
            try {
                for (var t = 5; 0 < --t; ) {
                    var n = 5;
                    do {
                        c = 1 + (c += 1), (NaN === (o && (o[c = 1 + c, 0] += -1))) / ("object" >> (2 === [ , 0 ].length) >> !0) ? c = 1 + c : (c = 1 + c, 
                        o && (o.null += NaN <= (!1 < (f && (f.set = 0)))));
                        let arguments = delete b;
                    } while (c = 1 + (c = 1 + c), c = 1 + (c += 1), y && (y.foo = 0), 
                    c = 1 + c, c += 1, /[abc4]/.test(((c += 1) + (o && "function" == typeof o.get && 0 <= --_calls_ && o.get([])) || b || 5).toString()) && 0 < --n);
                }
            } finally {
                for (var e = 5; a++ + a && 0 < --e; ) {
                    for (var l = 5; c = 1 + c, (o &= -5) < 4 && 0 < --l; ) {
                        c = 1 + c, f && (f.async %= NaN);
                    }
                }
            }
        }("b", 2);
    } catch (t) {
        for (var e = 5; new function() {
            if (this[-0] += !1 % ((2 === [ , 0 ].length === 2) - (2 === [ , 0 ].length == 1 / 0) >> 0 * (c += 1, 
            "b")) == (!0 - (f && (f[(c += 1) + (c = 1 + (c = 1 + c), -18 - (!1 !== (o && (o[c = 1 + c, 
            NaN] += !0))) - !1)] = 1)) == (c += 1, 0)) === (!0 & 7 % ((!0 - (-0 | 2 === [ , 0 ].length)) / !1)), 
            this.null = (f && (f[c = 1 + c, 0] = "23"), ((0 >> (c += 1, 4) <= 0) << 0 % (NaN != (n && (n[c = 1 + c, 
            !1] += !1)))) + ((n && (n.null &= !1)) <= NaN) + (0 & -28 == (25 == this))), 
            this.NaN = (0 + (o && (o.static = 3)) << (o && (o.b ^= 0 / (c += 1, 
            "a"))) < (!0 <= (n && ([ n[(c += 1) + (c = 1 + c, 0)] ] = [ "function" < this && 1 / 0 ]))) <= ((f && (f.b = !0)) != (f = NaN & (o && (o.value += (n && (n.in = !1)) * ((2 === [ , 0 ].length) < -3)))))) % (c += 1, 
            o && (o[delete b] = -("object" <= (2 === [ , 0 ].length && this)))), 
            "function" == typeof f2 && 0 <= --_calls_ && f2()) {
                c = 1 + (c += 1), n && (n[c = 1 + c, 0] |= NaN);
                for (var t = 5; c = 1 + c, ("number" >> this != -0) <= "number" && 0 < t; --t) {
                    c = 1 + c, c += 1;
                }
            }
        }() && 0 < e; --e) {
            for (var l = 5; ++b && 0 < --l; ) {
                var r = 5;
                do {
                    try {
                        --b + !(0 << (25 >> (2 === [ , 0 ].length)) << !0) && --b;
                    } finally {
                        return b *= a, a++;
                    }
                } while (0 < --r);
            }
        }
        return;
    } finally {
        var i = void 0;
        if (c += 1, (/[abc4]/.test((-3 == ((2 === [ , 0 ].length) >> "bar" && (c += 1, 
        "24")) || b || 5).toString()) || 9).toString()[a++], a++ + f) {
            f = function*() {
                for (var t = 5; "function" == typeof f2 && 0 <= --_calls_ && f2(0, (c = 1 + c, 
                !1 < (0 & 2 === [ , 0 ].length) % (c += 1, {}))) ? (c = 1 + c, i && (i[c = 1 + c, 
                (-5 >>> 5 ^ -5 !== (2 === [ , 0 ].length)) <= (2 === [ , 0 ].length && -2)] = 2 / (2 === [ , 0 ].length))) : (i += "c", 
                c = 1 + (c = 1 + c)), b && 0 < --t; ) {}
            }().next();
        } else {
            for (var h = 5; f = --b + (n /= (2 === [ , 0 ].length) in [ !1 ]), --b, 
            f = a++ + a--, 0 < --h; ) {}
        }
    }
    for (var u in (c += 1) + function() {
        for (var t = 5; (c += 1) + ("function" == typeof f3 && 0 <= --_calls_ && f3`${"symbol" != typeof foo}`) && 0 < --t; ) {}
        for (var n = 5; (c += 1) + {
            undefined: a++ + --b,
            var: b ^= a
        } && 0 < --n; ) {}
    }) {
        c = 1 + c, c += 1;
    }
    for (var v = 5; b && 0 < --v; ) {
        c = 1 + (c = 1 + (c = 1 + c)), c += 1;
    }
}

var undefined_1 = f0();

console.log(null, a, b, c, 1 / 0, NaN, void 0);

export {
    undefined_1
};
original result:
null 107 0 107 Infinity NaN undefined

uglified result:
null 108 945 59 Infinity NaN undefined
// reduced test case (output will differ)

// (beautified)
try {
    (function f1() {
        do {
            {
                const arguments_1 = console.log();
                let arguments;
                console.log(arguments_1);
            }
        } while (brake5);
    })();
} catch (c_2) {}
// output: 
// undefined
// 
// minify: 
// 
// options: {
//   "compress": {
//     "passes": 1000000,
//     "sequences": 1000000,
//     "unsafe": true,
//     "unsafe_Function": true,
//     "unsafe_math": true,
//     "unsafe_proto": true,
//     "unsafe_regexp": true
//   },
//   "module": false,
//   "mangle": {
//     "v8": true
//   },
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "compress": {
    "passes": 1000000,
    "sequences": 1000000,
    "unsafe": true,
    "unsafe_Function": true,
    "unsafe_math": true,
    "unsafe_proto": true,
    "unsafe_regexp": true
  },
  "module": false,
  "mangle": {
    "v8": true
  },
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  join_vars
  loops
  passes
  reduce_vars
  unused
  varify

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions