Skip to content

[Bug]: Out Of Memory Abort during asm.js module linking #7052

@bendrissou

Description

@bendrissou

ChakraCore Version

622c745

Steps to reproduce

Build ChakraCore with the default configuration:

./build.sh

Run ChakraCore with the provided input:

./out/Release/ch test.js

Proof of concept

function asmModule(global) {
    "use asm";
    var sin = global.sin;
    function foo() {
        return +sin(0.0);
    }
    function bar() {
        return +foo();
    }
    return bar;
}
var bar = asmModule(this);
var y = asmModule("pass");

Exception or Error

Console output:

Aborted (core dumped)

Exite code:

134


GDB output:

(gdb) run
Starting program: ./out/Release/ch test.js
warning: Error disabling address space randomization: Operation not permitted
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fb74068f700 (LWP 1019429)]
[New Thread 0x7fb73fe5f700 (LWP 1019432)]
[New Thread 0x7fb73f65e700 (LWP 1019433)]

Thread 1 "ch" received signal SIGILL, Illegal instruction.
0x00007fbf4141c511 in ReportFatalException () from /home/chakracore/program/out/Release/libChakraCore.so
(gdb) bt
#0  0x00007fbf4141c511 in ReportFatalException () from /home/chakracore/program/out/Release/libChakraCore.so
#1  0x00007fbf4141c619 in OutOfMemory_unrecoverable_error() () from /home/chakracore/program/out/Release/libChakraCore.so
#2  0x00007fbf4146eaec in Js::Exception::RaiseIfScriptActive(Js::ScriptContext*, unsigned int, void*) ()
   from /home/chakracore/program/out/Release/libChakraCore.so
#3  0x00007fbf4141c7b9 in Js::Throw::OutOfMemory() () from /home/chakracore/program/out/Release/libChakraCore.so
#4  0x00007fbf415c3ffb in Js::InterpreterStackFrame::ProcessLinkFailedAsmJsModule() () from /home/chakracore/program/out/Release/libChakraCore.so
#5  0x00007fbf415c36dd in Js::InterpreterStackFrame::ProcessAsmJsModule() () from /home/chakracore/program/out/Release/libChakraCore.so
#6  0x00007fbf415b8f66 in Js::InterpreterStackFrame::Process() () from /home/chakracore/program/out/Release/libChakraCore.so
#7  0x00007fbf415b8604 in Js::InterpreterStackFrame::InterpreterHelper(Js::ScriptFunction*, Js::ArgumentReader, void*, void*, Js::InterpreterStackFrame::AsmJsReturnStruct*) () from /home/chakracore/program/out/Release/libChakraCore.so
#8  0x00007fbf415b8195 in Js::InterpreterStackFrame::InterpreterThunk(Js::JavascriptCallStackLayout*) ()
   from /home/chakracore/program/out/Release/libChakraCore.so
#9  0x00007fb73edb0f9a in ?? ()
#10 0x00007ffdb2b24640 in ?? ()
#11 0x00007fbf4187d5ee in amd64_CallFunction () from /home/chakracore/program/out/Release/libChakraCore.so
Backtrace stopped: frame did not save the PC

Additional Context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions