Skip to content

ufuzz failure #5754

Closed
Closed
@alexlamsl

Description

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

typeof a == "function" && --_calls_ >= 0 && a(a && (a.done %= ([ , 0 ][1] ^ 25) >>> (c = c + 1, 
/[a2][^e]+$/) == (a = (a = -3 ^ "bar") != "b" + [])));

{
    var b_2 = function f0() {
        async function* f1(b_1, yield_1, a_2) {
            switch ([ {
                "": (c = 1 + c, ((yield_1 -= NaN + "undefined") ^ (yield_1 && (yield_1.then = "object" % -2))) <= ((-4, 
                -4) == "undefined" % []))
            }, -3 ][(c = c + 1) + +(([ , 0 ].length === 2) - -3 || "c" > "c" || yield_1 && (yield_1[--b + (typeof f2 == "function" && --_calls_ >= 0 && f2(23..toString(), ..."" + yield_1))] = +"bar" + ("object" > Infinity)))]) {
              default:
              case new function a_2() {
                    this[b--] = (c = c + 1, [ , 0 ][1] + "function") != (5 !== -1 & (a_2 && (a_2[c = 1 + c, 
                    (Infinity >= 24..toString()) - "number" % false, b_1 |= -1 !== "bar" !== NaN * "c"] <<= this >= "function")));
                    this.get += -1 >>> -5 >>> (-2 >> /[a2][^e]+$/) != ((yield_1 |= "" ^ -1) | 38..toString() / false);
                    {
                    }
                }():
                {
                    c = 1 + c, yield_1 *= ("foo" + "" >>> (-5 === 22)) * ((-2 <= [ , 0 ][1]) * ({} <= NaN));
                }
                break;

              case (c = c + 1) + (b_1 && b_1[("object" == 24..toString() ^ (/[a2][^e]+$/ | -0)) & ((3 ^ "undefined") & 5 > "a")]):
                return;
                c = c + 1;
                break;

              case function await_1(a) {}:
                break;
                break;
            }
            if (b = a) {
                try {
                    for (var brake13 = 5; a++ + (typeof a_2 == "function" && --_calls_ >= 0 && a_2("c", (c = 1 + c, 
                    (undefined >= this) % ("function" % "foo") || 1 !== -5 == false <= -3))) && brake13 > 0; --brake13) {
                        return c = 1 + c, void (("foo" < null) * (-5 ^ -1));
                    }
                } catch (c) {
                    c = c + 1;
                    var b_1;
                } finally {
                    L12638: {
                    }
                    if (c = 1 + c, b_1 += (false < "" || NaN >>> 1) >= ("object" == ([ , 0 ].length === 2)) >> (2 < 38..toString())) {
                        c = 1 + c, -2 < true == "a" % Infinity === (-0 === 25) < (undefined != undefined);
                    } else {
                        c = 1 + c, !(c = c + 1, 23..toString() !== "bar");
                    }
                    {
                        var expr21 = (c = 1 + c, ("undefined" >= [] ?? /[a2][^e]+$/ !== 0) > (5 + ([ , 0 ].length === 2)) * (-5 >>> -5));
                        L12639: for (var [ key21 ] in expr21) {
                            c = 1 + c;
                            var bar_1 = expr21[key21];
                            c = 1 + c, ~((2 ?? 22) !== (yield_1 && (yield_1.set = "bar" < Infinity)));
                        }
                    }
                }
            }
        }
        var NaN_2 = f1((c = c + 1) + -((-1 ?? 3) / (0 << "object") + (NaN_2 && (NaN_2.foo = (null && "a") | 1 / Infinity)))).next();
        function f2() {
            var b = --b + void function a_2() {
                {
                }
                var b_2;
                {
                    var brake26 = 5;
                    do {
                        c = 1 + c, -1 % "object" < (c = c + 1, 5) != (null ^ 0 ^ [ , 0 ][1] - -2);
                    } while ((c = 1 + c, (b && (b[--b + void function() {
                    }()] >>= (38..toString() << true) / ("bar" ^ 1))) / (5 - 38..toString() == -"bar")) && --brake26 > 0);
                }
                {
                    var brake28 = 5;
                    do {
                        c = 1 + c, b && (b[(c = c + 1) + (0 in [ , (c = 1 + c, (-4 !== 5) <= (3 < "number") > (b && (b.var |= -5 << "function" >= (b && (b.async = NaN + undefined))))), (c = 1 + c, 
                        a_2 && ([ a_2.set ] = [ (23..toString() ?? 38..toString()) >>> ("function" | null) && (({}, 
                        3) && "object" >= undefined) ])), , (c = 1 + c, ((a_2 && (a_2.async = ("bar", 
                        false))) > "undefined" * false) << (b &= 38..toString() ^ "object") * (/[a2][^e]+$/ == "object")) ])] += (c = c + 1, 
                        NaN && [ , 0 ].length === 2) != (("bar", "") !== 5 >>> /[a2][^e]+$/));
                    } while ((c = 1 + c, (this == "function") >= (c = c + 1, "function") & (/[a2][^e]+$/ - -4) % (-5 >> undefined)) && --brake28 > 0);
                }
                {
                }
            }();
            {
                {
                    var expr32 = a++ + ([] in []);
                    for (var key32 in expr32) {
                        c = 1 + c;
                        var arguments_1 = expr32[key32];
                        {
                        }
                    }
                }
                for (var brake34 = 5; a++ + ((c = 1 + c, false >= Infinity <= NaN >> "", 
                ~([] || false)) || 6).toString()[c = 1 + c, ((Infinity, -5) && null !== 3) >>> (38..toString(), 
                24..toString()) * (24..toString() == 3)] && brake34 > 0; --brake34) {
                    var expr35 = (c = 1 + c, 22 - 23..toString() <= 5 / "function" < (null >> "bar" & NaN >= []));
                    L12640: for (var key35 in expr35) {
                        c = 1 + c, key35 && (key35.static /= ("b" ^ "foo") != ("" || 25) != (("c", 
                        NaN) == 0 >>> ([ , 0 ].length === 2)));
                    }
                }
                try {
                    var NaN_1;
                } finally {
                    c = 1 + c, 23..toString() << -2 < (-4 <= -3) == (NaN_1 && (NaN_1[/[abc4]/.test(((c = 1 + c, 
                    (NaN_2 = [] > this | 22 != 3) <= ("foo" < "b" >= ({} != -2))) || b || 5).toString())] = (-3 != [ , 0 ][1]) < ("number" === "bar")));
                }
            }
            return b + 1 - .1 - .1 - .1;
        }
        var a_2 = f2();
        function f3({
            c: NaN_2_2,
            foo: bar
        }, a_2, {
            NaN: b_1,
            [a++]: a_1
        }) {
            if ((c = c + 1) + (NaN_2 && NaN_2[bar && bar[/[abc4]/.test(((c = 1 + c, 
            3 >> "a" !== null + Infinity & ({} & true ^ (4, "a"))) || b || 5).toString())]])) {
                var brake42 = 5;
                L12641: while ([] && --brake42 > 0) {
                    c = 1 + c, /[a2][^e]+$/ - [] ^ 23..toString() >> /[a2][^e]+$/ ^ (-42n).toString() !== {} == (null == "undefined");
                }
            } else {
                switch (/[abc4]/g.exec((--b + ("c" in [ (c = 1 + c, (b_1 = (a_2 && (a_2[c = 1 + c, 
                ((a_2 ??= "number" >> 4) < (a_1 && ([ a_1[c = 1 + c, ("number" ^ 23..toString() && (1 || "c")) ^ ({} && 5) !== -3 >>> "object"] ] = [ [ , 0 ][1] >> -0 ]))) * ((/[a2][^e]+$/ && 4) >> ([] ^ "bar"))] += 22 >= 23..toString())) <= (-1 > 0)) >= (a_2 && (a_2.value += 5 + -1 === (undefined ^ -5)))) ]) || b || 5).toString())) {
                  case --b + !function() {
                        c = 1 + c, (true | 22) + (-2 ^ "object") > (c = c + 1, "" && this);
                        c = 1 + c, (NaN_2 && (NaN_2.var = -1 === "") || NaN >= "bar") === (-3 < "" != "number" * {});
                        c = 1 + c, ((c = c + 1, -5) == ([ , 0 ].length === 2 != 3)) * (null - -5 ^ 24..toString() - "bar");
                    }():
                    switch (c = 1 + c, "a" !== /[a2][^e]+$/ != ("" !== 3) == (NaN_2 && (NaN_2[a++ + (b_1 && typeof b_1.foo == "function" && --_calls_ >= 0 && b_1.foo((c = 1 + c, 
                    (NaN_2 *= "bar" !== Number(0xdeadn << 16n | 0xbeefn)) << (3 << -0) == ((23..toString() && -1) | -3 !== 22)), "object", 3))] ^= (NaN_2 && (NaN_2.undefined += "b" - /[a2][^e]+$/)) & (a_2 = false == 2)))) {
                      case c = 1 + c, "c" >>> 25 != -3 << /[a2][^e]+$/ ?? ([ , 0 ].length === 2) << NaN != null < -3:
                        ;
                        break;

                      default:
                        ;

                      case c = 1 + c, c = c + 1, (-1 ^ 4) + (-3 ^ 3):
                        ;
                        break;

                      case c = 1 + c, a_2 = ((c = c + 1, "function") & 1 / [ , 0 ][1]) > (2 && 38..toString()) << (23..toString() === {}):
                        ;
                        break;
                    }
                    {
                        var expr50 = (c = 1 + c, (-2 & undefined | -5 / "c") != ("function" >= 38..toString() ^ ("", 
                        true)));
                        L12642: for (var key50 in expr50) {
                            c = 1 + c;
                            var a_1_1 = expr50[key50];
                            c = 1 + c, ("b" | "number", c = c + 1, !0o644n) * (c = c + 1, 
                            Infinity >= Infinity);
                        }
                    }
                    break;

                  case --b + 1:
                    ;

                  case /[abc4]/g.exec((-0 || b || 5).toString()):
                    {
                        return c = 1 + c, ((/[a2][^e]+$/ && "foo") ^ "undefined" >> "") & (2 << NaN) * (0 || []);
                    }
                    var NaN_2_2 = (c = 1 + c, void "bar" % -"foo" >> ("" > this !== (b_1 += null === "")));
                    L12643: {
                    }

                  case typeof f2 == "function" && --_calls_ >= 0 && f2((c = 1 + c, 
                    (("a" === /[a2][^e]+$/) >= (22 < "bar")) % ((1 & "") * (this | "b")))):
                    var bar_2;
                    if (c = 1 + c, NaN >= "foo" > void "object" & (c = c + 1, 4) * (4 === 5)) {
                        c = 1 + c, c = c + 1, (([ , 0 ].length === 2) >= 3) + (1 | [ , 0 ].length === 2);
                    } else {
                        c = 1 + c, ("bar", "undefined") << (-0 & false) < !(-2 ^ 0);
                    }
                    for (var brake60 = 5; (c = 1 + c, ("function" * this > (2 > {})) - ((NaN_2_2 && (NaN_2_2[c = 1 + c, 
                    c = c + 1, a_2 && (a_2.__proto__ += undefined >= 22) || 24..toString() == null] = "bar" == -0)) > (-3 ^ "object"))) && brake60 > 0; --brake60) {
                        c = 1 + c, (false == 3) - (1 <= "foo") ^ (22 !== 2 && 2 === "foo");
                    }
                    break;
                }
            }
            {
                var brake62 = 5;
                while ([ a++ + {
                    then: (c = 1 + c, (NaN_2_2 && (NaN_2_2.in &&= ("c" && -4) == (this != NaN))) ^ (a_1 = this * -4 > ({} >= -2))),
                    1.5: (c = 1 + c, c = c + 1, a_2 && (a_2[[ ..."" + NaN_2_2, (c = 1 + c, 
                    (a_2 = "" + (-42n).toString()) < ("bar" == 1) !== (0 && "b") <= 38..toString() - true) ].done] += 23..toString() >> ([ , 0 ].length === 2) << ([ , 0 ][1] & 1))),
                    [(c = 1 + c, ((bar && (bar.a = "function" % false)) & (undefined && {})) < (([ , 0 ].length === 2) <= "a") * (null >> "number"))]: (c = 1 + c, 
                    (2 == this) / +"bar" === (-5 && "c") <= (NaN_2_2 && (NaN_2_2[c = 1 + c, 
                    (false | 0) >>> (-4 !== NaN) == ((a_2 += /[a2][^e]+$/ <= false) & (NaN || 3))] **= (4, 
                    "function")))),
                    undefined: (c = 1 + c, (("" || undefined) ^ ([ , 0 ].length === 2) * 0) == ("number", 
                    "object") >= (25 <= "c")),
                    foo: (c = 1 + c, (4 != [ , 0 ][1] ^ Infinity << 3) % (("foo" >= 4) << ([] >> -1)))
                }[c = 1 + c, 25 == "undefined" || "object" % NaN, (undefined ^ "") == (22 ?? {})] ] && --brake62 > 0) {
                    "object";
                }
            }
        }
        var bar_2 = f3({}, --b + (typeof f1 == "function" && --_calls_ >= 0 && f1()), {
            NaN: "object"
        });
    }(this);
}

console.log(null, a, b, c, Infinity, NaN, undefined);
// uglified code
// (beautified)
var _calls_ = 10, a = 100, b = 10, c = 0, b_2 = ("function" == typeof a && 0 <= --_calls_ && a(a && (a.done %= 25 >>> (c += 1, 
/[a2][^e]+$/) == (a = -3 != "b" + []))), function() {
    async function* f1(b_1, yield_1, a_2) {
        switch ([ {
            "": (c = 1 + c, ((yield_1 -= "NaNundefined") ^ (yield_1 && (yield_1.then = NaN))) <= (-4 == "undefined" % []))
        }, -3 ][(c += 1) + +((2 === [ , 0 ].length) - -3 || yield_1 && (yield_1[--b + (0 <= --_calls_ && f2(23..toString(), ..."" + yield_1))] = NaN))]) {
          default:
          case new function a_2() {
                this[b--] = (c += 1, "0function" != (!0 & (a_2 && (a_2[c = 1 + c, 
                24..toString(), b_1 |= !0] <<= "function" <= this)))), this.get += 0 != ((yield_1 |= -1) | 38..toString() / !1);
            }():
            c = 1 + c, yield_1 *= !0 * ({} <= NaN) * 0;
            break;

          case (c += 1) + (b_1 && b_1[0 & ("object" == 24..toString() ^ 0)]):
            return;

          case function(a) {}:
        }
        if (b = a) {
            try {
                var brake13 = 5;
                a++ + ("function" == typeof a_2 && 0 <= --_calls_ && a_2("c", (c = 1 + c, 
                (this <= void 0) % NaN || !1))) && 0 < brake13 && (c = 1 + c);
            } catch (c) {
                0;
            } finally {
                c = 1 + c, (b_1 += ("object" == (2 === [ , 0 ].length)) >> (2 < 38..toString()) <= 0) ? c = 1 + c : (c = 1 + c, 
                c += 1, 23..toString());
                c = 1 + c;
                var key21, a_2 = 31 * (5 + (2 === [ , 0 ].length)) < ([] <= "undefined" ?? !0);
                for ([ key21 ] in a_2) {
                    c = 1 + c;
                    c = 1 + c, yield_1 && (yield_1.set = !1);
                }
            }
        }
    }
    var NaN_2 = f1((c += 1) + -(-1 / 0 + (NaN_2 && (NaN_2.foo = 0)))).next();
    function f2() {
        var key32, b = --b + void function a_2() {
            for (var brake26 = 5; c = 1 + c, c = 1 + (c += 1), (b && (b[--b + void 0] >>= 38..toString() << !0)) / (5 - 38..toString() == NaN) && 0 < --brake26; ) {}
            for (var brake28 = 5; c = 1 + c, b && (b[(c += 1) + (0 in [ , (c = 1 + c, 
            (b && (b.var |= (b && (b.async = NaN)) <= -5)) < !1), (c = 1 + c, a_2 && ([ a_2.set ] = [ (23..toString() ?? 38..toString()) >>> 0 && !1 ])), , (c = 1 + c, 
            (NaN < (a_2 && (a_2.async = !1))) << !1 * (b &= "object" ^ 38..toString())) ])] += 1 != (c += 1, 
            NaN)), c = 1 + c, ("function" == this) >= (c += 1, "function") & NaN && 0 < --brake28; ) {}
        }(), expr32 = a++ + ([] in []);
        for (key32 in expr32) {
            c = 1 + c;
        }
        for (var key35, brake34 = 5; a++ + (c = 1 + c, (~[] || 6).toString()[c = 1 + c, 
        !0 >>> (38..toString(), 24..toString() * (3 == 24..toString()))]) && 0 < brake34; --brake34) {
            for (key35 in c = 1 + c, 22 - 23..toString() <= NaN < (0 & [] <= NaN)) {
                c = 1 + c, key35 && (key35.static /= 1 != (NaN == 0 >>> (2 === [ , 0 ].length)));
            }
        }
        return c = 1 + c, 23..toString(), b + 1 - .1 - .1 - .1;
    }
    f2();
    !function({
        c: NaN_2_2,
        foo: bar
    }, a_2, {
        NaN: b_1,
        [a++]: a_1
    }) {
        if ((c += 1) + (NaN_2 && NaN_2[bar && bar[/[abc4]/.test((c = 1 + c, (!0 & (!0 & {} ^ "a") || b || 5).toString()))]])) {
            for (var brake42 = 5; 0 < --brake42; ) {
                c = 1 + c, 23..toString(), (-42n).toString();
            }
        } else {
            switch (/[abc4]/g.exec((--b + ("c" in [ (c = 1 + c, (b_1 = (a_2 && (a_2[c = 1 + c, 
            ((a_2 ??= 0) < (a_1 && ([ a_1[c = 1 + c, !0 ^ ("number" ^ 23..toString() && 1)] ] = [ 0 ]))) * (4 >> ("bar" ^ []))] += 23..toString() <= 22)) <= !1) >= (a_2 && (a_2.value += !1))) ]) || b || 5).toString())) {
              case --b + (c = 1 + c, c = 1 + (c += 1), NaN_2 && (NaN_2.var = !1), 
                c = 1 + c, c += 1, !void 24..toString()):
                switch (c = 1 + c, 0 == (NaN_2 && (NaN_2[a++ + (b_1 && "function" == typeof b_1.foo && 0 <= --_calls_ && b_1.foo((c = 1 + c, 
                (NaN_2 *= "bar" !== Number(0xdeadn << 16n | 0xbeefn)) << 3 == (!0 | (23..toString() && -1))), "object", 3))] ^= (NaN_2 && (NaN_2.undefined += NaN)) & (a_2 = !1)))) {
                  case c = 1 + c, !0:
                    break;

                  default:
                  case c = 1 + c, c += 1, -7:
                  case c = 1 + c, c += 1, a_2 = 38..toString() << (23..toString() === {}) < 0:
                }
                c = 1 + c;
                var key50, expr50 = 0 != (38..toString() <= "function" ^ !0);
                for (key50 in expr50) {
                    c = 1 + c;
                    c = (c = 1 + c) + 1 + 1;
                }
                break;

              case 1 + --b:
              case /[abc4]/g.exec((b || 5).toString()):
                return c = 1 + c;

              case 0 <= --_calls_ && f2(c = 1 + c):
                c = 1 + c, c = 1 + (c += 1);
                for (var brake60 = 5; c = 1 + c, ({} < 2 < "function" * this) - (-3 < (NaN_2_2 && (NaN_2_2[c = 1 + c, 
                c += 1, a_2 && (a_2.__proto__ += !1) || null == 24..toString()] = !1))) && 0 < brake60; --brake60) {
                    c = 1 + c;
                }
            }
        }
        for (var brake62 = 5; a++, c = 1 + c, NaN_2_2 && (NaN_2_2.in &&= -4 == (NaN != this)), 
        a_1 = -2 <= {} < -4 * this, c = 1 + c, c += 1, a_2 && (a_2[[ ..."" + NaN_2_2, (c = 1 + c, 
        (a_2 = "" + (-42n).toString()) < !1 != 0 <= 38..toString() - !0) ].done] += 23..toString() >> (2 === [ , 0 ].length) << 0), 
        c = 1 + c, bar && (bar.a = NaN), c = 1 + c, NaN_2_2 && (NaN_2_2[c = 1 + c, 
        0 == (3 & (a_2 += !1))] **= "function"), c = 1 + (c = 1 + (c = 1 + c)), 
        0 < --brake62; ) {}
    }({}, --b + (0 <= --_calls_ && f1()), {
        NaN: "object"
    });
}());

console.log(null, a, b, c, 1 / 0, NaN, void 0);
original result:
null 109 96 41 Infinity NaN undefined

uglified result:
null 109 96 44 Infinity NaN undefined
// reduced test case (output will differ)

// (beautified)
async function* f1() {
    try {
        for (var brake13 = 5; brake13; --brake13) {
            return void 0;
        }
    } finally {
        console.log();
    }
}

f1().next();

console.log(undefined);
// output: undefined
// 
// 
// minify: 
// undefined
// 
// options: {
//   "mangle": false,
//   "module": false,
//   "output": {
//     "v8": true
//   },
//   "validate": true
// }
minify(options):
{
  "mangle": false,
  "module": false,
  "output": {
    "v8": true
  }
}

Suspicious compress options:
  dead_code
  if_return
  loops

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions