chakra-core / chakra-core/ChakraCore
Assertion Failure in ChakraCore/lib/Runtime/./Types/RecyclableObject.h, VarIs<T>(aValue)
- Dominant language
- JavaScript
- Stars
- 9.3k
- Forks
- 1.2k
- PR merge metrics
- No merged PRs in 30d
Description
ChakraCore version:
commit c3ead3f
Build cmd:
```shell
./build.sh --debug --static
```
Test case:
```js
function test(){
async function foo(x) {
const F = Float32Array;
const S = Set;
const A = Array;
const R = Reflect;
const O = Object;
const isF = isFinite;
const P = Proxy;
const Sym = Symbol;
const Boo = Boolean;
const JS = JSON;
const ev = eval;
for (let i = 536870912; i < x; i = i ** x) {
const f = await foo;
const s = i.splice();
}
async function bart() {
const w = new WeakMap();
const s = w.set();
}
const ret = bart();
}
const r = foo();
return r;
}
for(let i=0; i<1024; i++)
{
test();
}
```
Execute
```shell
./ch ./test.js
```
Error msg:
```
ASSERTION 2785381: (ChakraCore/lib/Runtime/./Types/RecyclableObject.h, line 527) VarIs(aValue)
Failure: (VarIs(aValue))
Illegal instruction
```
Contributor guide
Research direction
Build ChakraCore with ./build.sh --debug --static, then run the supplied test.js with ./ch to reproduce the assertion in ChakraCore/lib/Runtime/./Types/RecyclableObject.h. Trace the failing VarIs(aValue) assertion and the async test path; done means the test no longer produces the assertion or illegal-instruction failure.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, javascript
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100