geckosio / phaser-on-nodejs

Allows you to run Phaser 3 game (including Phaser's physics engines) on Node.js
MIT License
102 stars 11 forks source link

V8 crash when accessing undefined variable inside Scene.create() #5

Closed AverageAlien closed 4 years ago

AverageAlien commented 4 years ago

When trying to access a property of a variable that is undefined, it is expected behavior to receive an error Uncaught TypeError: Cannot read property 'X' of undefined. or something alike, which helps pinpoint exactly where the problem occurs.

However, whenever I'm trying to access an undefined variable inside create() method of a Phaser Scene, I get the following lengthy error: FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal. 1: 00007FF63068124F napi_wrap+124431 2: 00007FF630622A06 v8::base::CPU::has_sse+34502 3: 00007FF6306236C6 v8::base::CPU::has_sse+37766 4: 00007FF630E31305 v8::V8::ToLocalEmpty+53 5: 00007FF9B6D1506D Canvas::stride+255157 6: 00007FF9B6CE64F7 Canvas::stride+63807 7: 00007FF630DDC4E0 v8::internal::Builtins::builtin_handle+325536 8: 00007FF630DDBA27 v8::internal::Builtins::builtin_handle+322791 9: 00007FF630DDBD68 v8::internal::Builtins::builtin_handle+323624 10: 00007FF630DDBB6E v8::internal::Builtins::builtin_handle+323118 11: 00007FF63125414D v8::internal::SetupIsolateDelegate::SetupHeap+568205 12: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 13: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 14: 00007FF6311D1191 v8::internal::SetupIsolateDelegate::SetupHeap+31697 15: 00007FF6311D0D7C v8::internal::SetupIsolateDelegate::SetupHeap+30652 16: 00007FF630D362D3 v8::internal::Execution::CallWasm+1395 17: 00007FF630D35C56 v8::internal::Execution::Call+182 18: 00007FF630B5B5EF v8::internal::Object::SetProperty+2495 19: 00007FF630B5B140 v8::internal::Object::SetProperty+1296 20: 00007FF630B5AB68 v8::internal::Object::SetProperty+72 21: 00007FF630C81676 v8::internal::StubCache::Set+60806 22: 00007FF630C7AE6F v8::internal::StubCache::Set+34175 23: 00007FF63125404D v8::internal::SetupIsolateDelegate::SetupHeap+567949 24: 00007FF6312AC9EE v8::internal::SetupIsolateDelegate::SetupHeap+930862 25: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 26: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 27: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 28: 00007FF6311CCF8C v8::internal::SetupIsolateDelegate::SetupHeap+14796 29: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 30: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 31: 00007FF6311CCF8C v8::internal::SetupIsolateDelegate::SetupHeap+14796 32: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 33: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 34: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 35: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 36: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 37: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 38: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 39: 00007FF6311CCF8C v8::internal::SetupIsolateDelegate::SetupHeap+14796 40: 00007FF631221A06 v8::internal::SetupIsolateDelegate::SetupHeap+361542 41: 00007FF6311CF313 v8::internal::SetupIsolateDelegate::SetupHeap+23891 42: 00007FF6312B4E70 v8::internal::SetupIsolateDelegate::SetupHeap+964784 43: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 44: 00007FF6311CCF8C v8::internal::SetupIsolateDelegate::SetupHeap+14796 45: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 46: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 47: 00007FF631222E42 v8::internal::SetupIsolateDelegate::SetupHeap+366722 48: 00007FF6311F06AB v8::internal::SetupIsolateDelegate::SetupHeap+159979 49: 00007FF6311D107C v8::internal::SetupIsolateDelegate::SetupHeap+31420 50: 00007FF630D36360 v8::internal::Execution::CallWasm+1536 51: 00007FF630D36453 v8::internal::Execution::CallWasm+1779 52: 00007FF630D36832 v8::internal::Execution::TryCall+354 53: 00007FF630D1A065 v8::internal::MicrotaskQueue::RunMicrotasks+517 54: 00007FF630DDC4E0 v8::internal::Builtins::builtin_handle+325536 55: 00007FF630DDBA27 v8::internal::Builtins::builtin_handle+322791 56: 00007FF630DDBD68 v8::internal::Builtins::builtin_handle+323624 57: 00007FF630DDBB6E v8::internal::Builtins::builtin_handle+323118 58: 00007FF63125414D v8::internal::SetupIsolateDelegate::SetupHeap+568205 59: 00007FF6311D3BDC v8::internal::SetupIsolateDelegate::SetupHeap+42524 60: 00007FF6311D1191 v8::internal::SetupIsolateDelegate::SetupHeap+31697 61: 00007FF6311D0D7C v8::internal::SetupIsolateDelegate::SetupHeap+30652 62: 00007FF630D362D3 v8::internal::Execution::CallWasm+1395 63: 00007FF630D35C56 v8::internal::Execution::Call+182 64: 00007FF630E06ECB v8::Function::Call+603 65: 00007FF6305C46C7 v8::internal::interpreter::BytecodeLabel::bind+78119 66: 00007FF630649E31 node::Start+1233 67: 00007FF63064A087 node::Start+1831 68: 00007FF630648F5A node::LoadEnvironment+26 69: 00007FF6305EBA95 v8::internal::Scope::locals+30565 70: 00007FF630649A73 node::Start+275 71: 00007FF63050667C RC4_options+339324 72: 00007FF631307138 v8::internal::SetupIsolateDelegate::SetupHeap+1301368 73: 00007FFA26177E94 BaseThreadInitThunk+20 74: 00007FFA26EF7AD1 RtlUserThreadStart+33 npm ERR! code ELIFECYCLE npm ERR! errno 134 npm ERR! v8bugtest@1.0.0 start:rimraf /build && tsc && node build/index.js npm ERR! Exit status 134

It seems like the error completely crashes V8 engine. This doesn't happen if I run a Phaser game client in browser. I am using NodeJS of version 12.13.1.

I've made the following minimal repository to reproduce the issue: https://github.com/AverageAlien/v8-phaser-node-bug

yandeu commented 4 years ago

Looks like there is something wrong with the latest version of node-canvas.

canvas@2.5.0

Error: Uncaught [TypeError: Cannot read property 'length' of undefined]

canvas@2.6.0

FATAL ERROR: v8::ToLocalChecked Empty MaybeLocal.
AverageAlien commented 4 years ago

I ran npm install canvas@2.5.0 and that fixed the issue. Thanks!