Stack trace of another thread that might be the culprit below. The way the code works is I have a few files, all of which have a native method to include, which can include other files into the global scope.
a.js: include('b.js') b.js: include('c.js') So you can see the nested v8::Script::Run calls, as we include a.js, we execute the script, which triggers a native call to include, which compiles another file b.js, and goes into Script::Run for that file, etc. Stacktrace: 0 # NtWaitForAlertByThreadId in ntdll+0xa0f24 1 # RtlAcquireSRWLockExclusive in ntdll+0x29205 2 # v8::base::SharedMutex::LockExclusive in app+0x67c96f 3 # `v8::internal::ParkedSharedMutexGuardIf<1,0>::ParkedSharedMutexGuardIf<1,0>'::`25'::<lambda_2>::operator() in app+0xf89b29 4 # v8::internal::LocalHeap::ParkAndExecuteCallback<`v8::internal::ParkedSharedMutexGuardIf<1,0>::ParkedSharedMutexGuardIf<1,0>'::`25'::<lambda_2> > in app+0xf88858 5 # `v8::internal::LocalHeap::ExecuteWhileParked<`v8::internal::ParkedSharedMutexGuardIf<1,0>::ParkedSharedMutexGuardIf<1,0>'::`25'::<lambda_2> >'::`2'::<lambda_1>::operator() in app+0xf897d9 6 # heap::base::Stack::SetMarkerAndCallbackImpl<`v8::internal::LocalHeap::ExecuteWhileParked<`v8::internal::ParkedSharedMutexGuardIf<1,0>::ParkedSharedMutexGuardIf<1,0>'::`25'::<lambda_2> >'::`2'::<lambda_1> > in app+0xf88a2b 7 # PushAllRegistersAndIterateStack in app+0x104eb4d 8 # heap::base::Stack::TrampolineCallbackHelper in app+0x8dc837 9 # heap::base::Stack::SetMarkerAndCallback<`v8::internal::LocalHeap::ExecuteWhileParked<`v8::internal::ParkedSharedMutexGuardIf<1,0>::ParkedSharedMutexGuardIf<1,0>'::`25'::<lambda_2> >'::`2'::<lambda_1> > in app+0xf88964 10 # v8::internal::LocalHeap::ExecuteWithStackMarker<`v8::internal::LocalHeap::ExecuteWhileParked<`v8::internal::ParkedSharedMutexGuardIf<1,0>::ParkedSharedMutexGuardIf<1,0>'::`25'::<lambda_2> >'::`2'::<lambda_1> > in app+0xf87e8e 11 # v8::internal::LocalHeap::ExecuteWhileParked<`v8::internal::ParkedSharedMutexGuardIf<1,0>::ParkedSharedMutexGuardIf<1,0>'::`25'::<lambda_2> > in app+0xf87ce5 12 # v8::internal::ParkedSharedMutexGuardIf<0,0>::ParkedSharedMutexGuardIf<0,0> in app+0xf8926d 13 # v8::internal::ParkedSharedMutexGuardIf<0,0>::ParkedSharedMutexGuardIf<0,0> in app+0xf892ba 14 # v8::internal::MapUpdater::ReconfigureToDataField in app+0xf93add 15 # v8::internal::Map::Update in app+0x8f85c7 16 # v8::internal::Map::TransitionToDataProperty in app+0x8f6020 17 # v8::internal::LookupIterator::PrepareTransitionToDataProperty in app+0xabcf05 18 # v8::internal::StoreIC::LookupForWrite in app+0x1e2c091 19 # v8::internal::StoreIC::UpdateCaches in app+0x1e3889d 20 # v8::internal::StoreIC::Store in app+0x1e34ca2 21 # v8::internal::MaybeObjectHandle::Weak in app+0x1e44cce 22 # v8::internal::Runtime_StoreIC_Miss in app+0x1e2edb4 23 # Builtins_CEntry_Return1_ArgvOnStack_NoBuiltinExit in app+0x1684185 <many jit frames> 45 # Builtins_InterpreterPushArgsThenFastConstructFunction in app+0x12a87b0 46 # Builtins_InterpreterPushArgsThenFastConstructFunction in app+0x12a87b0 47 # Builtins_ConstructHandler in app+0x1c8238d 48 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 49 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 50 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 51 # Builtins_JSEntryTrampoline in app+0x129e860 52 # Builtins_JSEntry in app+0x129e3b7 53 # v8::internal::GeneratedCode<unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,__int64,unsigned __int64 * __ptr64 * __ptr64>::Call in app+0x68dff5 54 # v8::internal::Isolate::IncrementJavascriptExecutionCounter in app+0x68f8fc 55 # v8::internal::Execution::CallScript in app+0x68e4de 56 # v8::Script::Run in app+0x655458 57 # v8::Script::Run in app+0x655056 58 # Script::include at Script.cpp:566 (app+0x378392b) 59 # include_file at JSCore.cpp:225 (app+0x373b03b) 60 # func_caller at js32.cpp:136 (app+0x3734f8a) 61 # Builtins_CallApiCallbackGeneric in app+0x12ab99b <many jit frames> 101 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 102 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 103 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 104 # Builtins_JSEntryTrampoline in app+0x129e860 105 # Builtins_JSEntry in app+0x129e3b7 106 # v8::internal::GeneratedCode<unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,__int64,unsigned __int64 * __ptr64 * __ptr64>::Call in app+0x68dff5 107 # v8::internal::Isolate::IncrementJavascriptExecutionCounter in app+0x68f8fc 108 # v8::internal::Execution::CallScript in app+0x68e4de 109 # v8::Script::Run in app+0x655458 110 # v8::Script::Run in app+0x655056 111 # Script::include at Script.cpp:566 (app+0x378392b) 112 # include_file at JSCore.cpp:225 (app+0x373b03b) 113 # func_caller at js32.cpp:136 (app+0x3734f8a) 114 # Builtins_CallApiCallbackGeneric in app+0x12ab99b <many jit frames> 154 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 155 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 156 # Builtins_JSEntryTrampoline in app+0x129e860 157 # Builtins_JSEntry in app+0x129e3b7 158 # v8::internal::GeneratedCode<unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,__int64,unsigned __int64 * __ptr64 * __ptr64>::Call in app+0x68dff5 159 # v8::internal::Isolate::IncrementJavascriptExecutionCounter in app+0x68f8fc 160 # v8::internal::Execution::CallScript in app+0x68e4de 161 # v8::Script::Run in app+0x655458 162 # v8::Script::Run in app+0x655056 163 # Script::include at Script.cpp:566 (app+0x378392b) 164 # include_file at JSCore.cpp:225 (app+0x373b03b) 165 # func_caller at js32.cpp:136 (app+0x3734f8a) 166 # Builtins_CallApiCallbackGeneric in app+0x12ab99b 167 # Builtins_InterpreterEntryTrampoline in app+0x12a7825 168 # Builtins_JSEntryTrampoline in app+0x129e860 169 # Builtins_JSEntry in app+0x129e3b7 170 # v8::internal::GeneratedCode<unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,unsigned __int64,__int64,unsigned __int64 * __ptr64 * __ptr64>::Call in app+0x68dff5 171 # v8::internal::Isolate::IncrementJavascriptExecutionCounter in app+0x68f8fc 172 # v8::internal::Execution::CallScript in app+0x68e4de 173 # v8::Script::Run in app+0x655458 174 # v8::Script::Run in app+0x655056 175 # Script::run at Script.cpp:409 (app+0x378081f) 176 # script_thread at Script.cpp:747 (app+0x378460d) 177 # BaseThreadInitThunk in KERNEL32+0x17374 178 # RtlUserThreadStart in ntdll+0x4cc91 On Tuesday, 24 June 2025 at 22:45:00 UTC+1 jmr wrote: > Hi, > > I'm embedding a statically linked v8 into my msvc dll, which is then > loaded as a plugin in another application. > While running under debug mode I noticed the following assertion failure: > > C:\Program Files\Microsoft Visual > Studio\2022\Community\VC\Tools\MSVC\14.43.34808\include\vector(280) : > Assertion failed: can't dereference out of range vector iterator > > coming from: > ... > > 3 # `DllMain'::`5'::<lambda_1>::operator() at dllmain.cpp:598 > (app+0x371a7cd) > 4 # `DllMain'::`5'::<lambda_1>::<lambda_invoker_cdecl> at > dllmain.cpp:614 (app+0x371a668) > 5 # _VCrtDbgReportA at dbgrptt.cpp:391 (app+0x361df8f) > 6 # _CrtDbgReport at dbgrpt.cpp:263 (app+0x35ee779) > 7 # > std::_Vector_iterator<std::_Vector_val<std::_Simple_types<std::pair<int,v8::internal::Tagged<v8::internal::HeapObject> > > > > > >::operator-> in app+0x92054c > 8 # v8::MemorySpan<v8::internal::Handle<v8::internal::Map> > >::to_address<std::_Vector_iterator<std::_Vector_val<std::_Simple_types<v8::internal::Handle<v8::internal::Map> > > > > > >,void> in app+0x10e5643 > 9 # v8::MemorySpan<v8::internal::Handle<v8::internal::Map> > >::MemorySpan<v8::internal::Handle<v8::internal::Map> > ><std::_Vector_iterator<std::_Vector_val<std::_Simple_types<v8::internal::Handle<v8::internal::Map> > > > > > >,1> in app+0x10e50c4 > 10 # > v8::internal::compiler::JSHeapBroker::ProcessFeedbackMapsForElementAccess > in app+0x251e77a > 11 # v8::internal::compiler::JSHeapBroker::ReadFeedbackForPropertyAccess > in app+0x2520011 > 12 # v8::internal::compiler::JSHeapBroker::GetFeedbackForPropertyAccess > in app+0x251af78 > 13 # v8::internal::maglev::MaglevGraphBuilder::VisitStaInArrayLiteral in > app+0x2862834 > 14 # v8::internal::maglev::MaglevGraphBuilder::VisitSingleBytecode in > app+0x2343e8f > 15 # v8::internal::maglev::MaglevGraphBuilder::BuildBody in app+0x230b567 > 16 # v8::internal::maglev::MaglevGraphBuilder::Build in app+0x230b385 > 17 # v8::internal::maglev::MaglevCompiler::Compile in app+0x230bd91 > 18 # v8::internal::maglev::MaglevCompilationJob::ExecuteJobImpl in > app+0xfe89b8 > 19 # v8::internal::OptimizedCompilationJob::ExecuteJob in app+0xb0583b > 20 # v8::internal::maglev::MaglevConcurrentDispatcher::JobTask::Run in > app+0xfe9c23 > 21 # v8::platform::DefaultJobWorker::Run in app+0xd2a949 > 22 # v8::platform::DefaultWorkerThreadsTaskRunner::WorkerThread::Run in > app+0xd2b1c2 > 23 # v8::base::Thread::NotifyStartedAndRun in app+0x681104 > 24 # v8::base::OS::StrNCpy in app+0x681e4d > 25 # thread_start<unsigned int (__cdecl*)(void *),1> at thread.cpp:97 > (app+0x3622e45) > 26 # BaseThreadInitThunk in KERNEL32+0x17374 > 27 # RtlUserThreadStart in ntdll+0x4cc91 > ``` > > Sadly none of this looks like my code, hence I'm lost as to why this is > happening. > > The reason I'm running a debug build is trying to find a heap corruption > that has been happening, potentially somewhere in my code, and I wonder if > this could be related. > > My application has an isolate per thread, I'm not using lockers (as in > theory each isolate is single threaded), and any time data flows between > threads it's done via ValueSerializer. > > Sadly this is version 12.9.202, as that is the last version that supports > MSVC. > > Any advice as to what I'm doing wrong would be helpful, or how to approach > debugging this. > > Sadly the debugging situation is dire, the application that I'm loading my > plugin in, cannot be debugged due to protections and I'm mostly constrained > to printf, and various hooks that CRT provides. > > Thanks, > Audrius. > -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/v8-users/e62aea95-0a18-40be-a596-aaeceef6c1f7n%40googlegroups.com.