SkylerLipthay / mini-v8

A minimal embedded V8 JavaScript engine wrapper for Rust
MIT License
104 stars 11 forks source link

Recursive Object Overflows Stack when formatted with Debug #7

Open fstaebler opened 10 months ago

fstaebler commented 10 months ago

when assigning an object to one of its fields (e.g. window = this) the Debug formatter overflows the stack.

example:

let v8 = MiniV8::new();
v8.eval::<&str, ()>("window = this;").unwrap();
dbg!(v8.global());

will do something like

[src\main.rs:10] v8.global() = { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self": { "self":
thread 'main' has overflowed its stack
error: process didn't exit successfully: `target\release\example.exe` (exit code: 0xc00000fd, STATUS_STACK_OVERFLOW)

this might be a DOS risk when logging the output of untrusted code, and it also makes debugging a fake browser window very annoying.