When calling javascript from a C# function via Edge.Func
, 64 bit edge v6.11.2 fails to initialize with a fatal exception from v8.
32 bit edge has no issues, so I suspect there may be a problem with the compiled 64 bit node.dll
.
Stack from crash dump:
00 0000009c
5b68d5e8 000007fb
a2f8a2b1 ntdll!ZwTerminateProcess
01 0000009c5b68d5f0 000007fb
a0d0449a ntdll!RtlExitUserProcess+0x75
02 0000009c5b68d630 000007fb
99b706d4 kernel32!ExitProcessImplementation+0xa
03 0000009c5b68d660 000007fb
99cf7e2d mscoreei!RuntimeDesc::ShutdownAllActiveRuntimes+0x287
04 0000009c5b68d950 000007fb
7e380b39 mscoree!ShellShim_CorExitProcess+0x10e
05 0000009c5b68d980 000007fb
7e380adc node!__acrt_lowio_create_handle_array+0x59
06 0000009c5b68d9b0 000007fb
7e380a80 node!calloc+0x4
07 0000009c5b68d9e0 000007fb
7d9f0bdf node!_exit+0x4
08 0000009c5b68da10 000007fb
7d9f0d2c node!node::FatalException+0x1df
09 0000009c5b68dad0 000007fb
7decadc2 node!node::OnMessage+0x2c
0a (Inline Function) ---------------- node!v8::internal::Internals::HasHeapObjectTag+0x1 0b (Inline Function) --------
-------- node!v8::internal::Object::IsHeapObject+0x1
0c (Inline Function) ---------------- node!v8::internal::Object::IsUndefined+0x1 0d 0000009c
5b68db00 000007fb7df203f9 node!v8::internal::MessageHandler::ReportMessage+0x382 0e (Inline Function) --------
-------- node!v8::internal::Isolate::handler+0x6
0f (Inline Function) ---------------- node!v8::internal::Isolate::IsJavaScriptHandlerOnTop+0x6 10 0000009c
5b68dc70 000007fb7dc441e2 node!v8::internal::Isolate::ReportPendingMessages+0x79 11 (Inline Function) --------
-------- node!v8::internal::HandleBase::{ctor}+0x49
12 (Inline Function) ---------------- node!v8::internal::Handle<v8::internal::JSFunction>::{ctor}+0x49 13 0000009c
5b68dcd0 000007fb7dc4446b node!v8::internal::Isolate::get_stack_trace_line_fun+0xc2 14 (Inline Function) --------
-------- node!v8::internal::HandleScope::CreateHandle+0xc
15 (Inline Function) ---------------- node!v8::internal::HandleScope::GetHandle+0x22 16 (Inline Function) --------
-------- node!v8::internal::HandleBase::{ctor}+0x22
17 (Inline Function) ---------------- node!v8::internal::Handle<v8::internal::Object>::{ctor}+0x22 18 0000009c
5b68dd50 000007fb7dcac202 node!v8::internal::
anonymous namespace'::Invoke+0x1ab
19 0000009c5b68ddd0 000007fb
7d9f4ba0 node!v8::Function::Call+0x22
1a (Inline Function) ---------------- node!v8::Function::Call+0x96 1b 0000009c
5b68dee0 000007fb7d9f7496 node!node::LoadEnvironment+0x290 1c 0000009c
5b68dfd0 000007fb7d9f7865 node!node::StartNodeInstance+0x1a6 1d 0000009c
5b68e0f0 000007fb3a7e45a6 node!node::Start+0x1a5 1e 0000009c
5b68e1a0 000007fb3a7e444a easyauthshim!DomainBoundILStubClass.IL_STUB_PInvoke(Int32, System.String[])+0x116 1f 0000009c
5b68e2b0 000007fb`97ee4982 EdgeJs!EdgeJs.Edge+<>c__DisplayClass11_0.b__0()+0x20a
It appears to be some snafu in my build process - the nuget package contains two identical copies of the x86 edge native library instead of x86 and x64 copy. I will see about a fix.
It is annoying nuget does not support semver suffixes:
I published 6.11.3 to nuget with the fixed x64 build. Verified with a x64 hello, world. Take it for a spin https://www.nuget.org/packages/Edge.js/6.11.3.
Thanks @tjanczuk for the quick turnaround! I'll give it a test and post back.
Haha I feel your pain on nuget semver - you could always go our route and slap a prerelease on everything :)
Most helpful comment
I published 6.11.3 to nuget with the fixed x64 build. Verified with a x64 hello, world. Take it for a spin https://www.nuget.org/packages/Edge.js/6.11.3.