cesanta / mjs

Embedded JavaScript engine for C/C++
https://mongoose-os.com
Other
1.91k stars 176 forks source link

Assertion `mjs_stack_size(&mjs->scopes) > 0' failed src/mjs_exec.c:725: mjs_execute. #184

Open hope-fly opened 2 years ago

hope-fly commented 2 years ago
mJS revision

Commit: b1b6eac

Build platform

Ubuntu 18.04.5 LTS (Linux 5.4.0-44-generic x86_64)

Build steps
vim Makefile
DOCKER_GCC=gcc
DOCKER_CLANG=clang
$(DOCKER_GCC) $(CFLAGS) $(TOP_MJS_SOURCES) $(TOP_COMMON_SOURCES) -o $(PROG)
# save the makefile then make
make
Test case
poc.js


```javascript
(function() {
  ((function JSEtest(a) {
    if (a > 3) {
      if ([((function JSEtest(a) {
    if (a > 3) {
      if ([Object.create.apply({}, [Object])]) {
      Object.create.apply({}, [Object])
    }
    }
  })(6))([((function JSEtest(a) {
    if (a > 3) {
      if ([Object.create.apply({}, [Object])]) {
      Object.create.apply({}, [Object])
    }
    }
  })(6))({}, [Object])])]) {
      Object.create.apply({}, [Object])
    }
    }
  })(6))
})()
```
Execution steps & Output
$ ./mjs/build/mjs poc.js

mjs: src/mjs_exec.c:725: mjs_execute: Assertion `mjs_stack_size(&mjs->scopes) > 0' failed.
[1]    111718 abort      mjs poc.js