Skip to content

ReportFatalException2 #6625

@bird8693

Description

@bird8693

enviroment

ubuntu18

poc

function testBuiltInFunction(options, builtInConstructor, builtInName, builtInFunc, intlConstructor, intlFunc, args) {
    try {
        var builtInValue = builtInValue !== intlValue ? console.log('en-US', options) : [...arguments].join(args[1], 'en-US', options);
        for (var ijjkkk = 0; ijjkkk < 100000; ++ijjkkk) {
            builtInValue = testBuiltInFunction(-2147483648, builtInValue, builtInValue, builtInValue, builtInValue, builtInValue, -1);
        }   
        var intlValue = [...arguments].join(args[0], args[1]);
        if (builtInValue !== intlValue) {
            new builtInConstructor(args[0])[builtInFunc](`ERROR: new ${ builtInConstructor.name }(${ args[0] }).${ builtInFunc }() -> ${ builtInValue } !== new Intl.${ intlConstructor }("en-US", ${ JSON.stringify(options) }).${ intlFunc }(${ args[0] }, ${ args[1] }) -> ${ intlValue }`);
        }   
    } catch (ex) {
        console.log(`Error: testBuiltInFunction(${ JSON.stringify(',') }) threw message ${ ex.message }`);
        var XwcJ = -5e-324 | 10000;
    }   
}
testBuiltInFunction({ minimumFractionDigits: 3 }, Number, 'Number', 'toLocaleString', '({x:3})', 'format', [0.48771553605893536]);
testBuiltInFunction({ sensitivity: 'base' }, String, 'String', 'localeCompare', 'Collator', '\'\'', [
    'A',
    'arguments.caller'
]);
testBuiltInFunction({
    hour: ' \'\\0\' ',
    timeZone: '1024'
}, Date, 'Date', 'toLocaleString', 'DateTimeFormat', 'arguments', [new Date(2000, 1, 1)]);
testBuiltInFunction({
    hour: 'numeric',
    timeZone: 'UTC'
}, Date, '/0/', 'v2', 'DateTimeFormat', 'format', [new Date(2000, 1, 1)]);
testBuiltInFunction({
    month: 'numeric',
    timeZone: '(new String(\'\'))'
}, Date, 'Date', 'toLocaleDateString', 'DateTimeFormat', 'format', [new Date(2000, 1, 1)]);
JSON.stringify('Pass');

callstack

[#0] 0x555555d59fac → DebugBreak()
[#1] 0x555555d59fac → ReportFatalException(context=<optimized out>, exceptionCode=<optimized out>, reasonCode=<optimized out>, scenarioptimized out>)
[#2] 0x555555d5a3a7 → OutOfMemory_unrecoverable_error()
[#3] 0x5555569f7a7b → Js::JavascriptExceptionOperators::ThrowOutOfMemory(scriptContext=0x61a000000680)
[#4] 0x55555750d896 → Js::JavascriptString::SetLength(this=<optimized out>, newLength=0x83421e59)
[#5] 0x555556a0230e → Js::CompoundString::TryAppendGeneric<Js::CompoundString>(s=0x7ffff21b3500, appendCharLength=0x41a10f26, toString7ffff21b3740)
[#6] 0x555556c2b50c → Js::CompoundString::AppendGeneric<Js::CompoundString>(s=0x7ffff21b3500, toString=0x7ffff21b3740, appendChars=0x0
[#7] 0x555556df24e9 → Js::JavascriptArray::JoinArrayHelper<Js::JavascriptArray>(arr=0x7ffff21b23f0, separator=0x7ffff21ad200, scriptCoxt=<optimized out>)
[#8] 0x555556d016ff → Js::JavascriptArray::JoinHelper(void*, Js::JavascriptString*, Js::ScriptContext*)::$_2::operator()() const(this=timized out>)
[#9] 0x555556d016ff → TryFinally<Js::JavascriptArray::JoinHelper(void*, Js::JavascriptString*, Js::ScriptContext*)::$_2, Js::Javascripray::JoinHelper(void*, Js::JavascriptString*, Js::ScriptContext*)::$_3>(Js::JavascriptArray::JoinHelper(void*, Js::JavascriptString*, :ScriptContext*)::$_2 const&, Js::JavascriptArray::JoinHelper(void*, Js::JavascriptString*, Js::ScriptContext*)::$_3 const&)(tryFunc=<imized out>, finallyFunc=<optimized out>)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions