"InitializeOncePerProcess" means it only *needs* to be called once. I have
no idea whether calling it repeatedly is supposed to work. Maybe it would
be easy to make it work -- that's why it would be interesting to know what
exactly is causing the crash. If it's easier for you to work around it,
then I suppose you might as well just do that.

On Tue, Apr 16, 2019 at 10:38 PM <andrei....@gmail.com> wrote:

> Thanks for the reply!
>
> I'm currently pulling down the v8 binaries from Nuget, so building V8 in
> Debug mode would take some effort (I'll have to figure it out! - hopefully
> https://github.com/pmed/v8-nuget is all i need).
>
> I guess my main question is whether or not Initialize can be called more
> than once (ie. what does InitializeOncePerProcess means). If it can only be
> called once by design, then that's that. If not, then this is worth
> investigating further.
>
> Andrei
>
> On Tuesday, 16 April 2019 05:00:32 UTC-4, Jakob Kummerow wrote:
>>
>> From the stack trace, it looks like you ran into a CHECK or DCHECK. If
>> you compile in Debug mode and run in a debugger, you should be able to find
>> out which (D)CHECK it was, which should shed some light onto what's going
>> on.
>>
>> On Tue, Apr 16, 2019 at 12:13 AM <andr...@gmail.com> wrote:
>>
>>> Hi all!
>>>
>>> I've embedded V8 (7.4.288.11 from NuGet) into an C# ASP.NET
>>> application. There is some glue code that initializes V8 (As per the
>>> hello-world sample):
>>>
>>> bool result = v8::V8::InitializeICUDefaultLocation(path);
>>> v8::V8::InitializeExternalStartupData(path);
>>> platform = v8::platform::NewDefaultPlatform();
>>> v8::V8::InitializePlatform(platform.get());
>>> v8::V8::Initialize();
>>>
>>>
>>> This works just fine when called just once. Sometimes, the Initialize
>>> code ends up being called a second time in the same process. (In this case
>>> because the AppDomain recycles but the process stays the same).
>>>
>>> When executing this code the second time, a crash occurs when
>>> v8::V8::InitializePlatform(platform.get()); is called the second time:
>>>
>>>  Exception #:  0X80000003
>>>  Stack:
>>>  v8_libbase!v8::base::OS::Abort+0x10
>>>  v8_libbase!V8_Fatal+0xf0
>>>  v8!v8::internal::wasm::WasmEngine::InitializeOncePerProcess+0x14a
>>>  0x7fe`99bca45e
>>>  0x7fe`99bc8648
>>>  clr!LogHelp_LogAssert+0x1f93
>>> {redacted}
>>>
>>>
>>> My understanding is that calling Initialize the second time should
>>> effectively be a no-op. Am I wrong? Shutdown is very well documented re:
>>> you can't re initialize after shutting down, but there isn't much about
>>> calling Initialize multiple time. The name InitializeOncePerProcess  to
>>> me implies that my assumption is correct.
>>>
>>> My workaround solution is to create a singleton in my glue code that
>>> keeps track of the state and causes Initialize to be a no-op in my code.
>>>
>>>
>>> Some background: This was a safe operation on a (very old) version of V8
>>> (3.16.14)  I'm working on upgrading it. Running in ASP.NET on IIS 10.
>>> On an AppDomain recycle (not app pool), The managed assemblies are unloaded
>>> and reloaded (but not the unmanaged ones, thus calling myV8::Initialize).
>>>
>>> Thanks!
>>>
>>> --
>>
>>

-- 
-- 
v8-dev mailing list
v8-dev@googlegroups.com
http://groups.google.com/group/v8-dev
--- 
You received this message because you are subscribed to the Google Groups 
"v8-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to v8-dev+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to