I just found a simply way to reproduce this:
Firstly, build d8 with the following args.gn:

is_debug = true

symbol_level=2

target_cpu = "x64"

v8_target_cpu = "x64"


Then, Create a file named inspector-demo.js:

// inspector-demo.js

// Receiver function called by d8.

function receive(message) {

  print(message)

}


const msg = JSON.stringify({

  id: 0,

  method: 'HeapProfiler.takeHeapSnapshot',

  params: {

          reportProgress: true,

          captureNumericValue: false,

          exposeInternals: false}

});


// Call the function provided by d8.

send(msg);


finally,Run this file by executing 'd8 --enable-inspector 
inspector-demo.js'.
在2023年12月1日星期五 UTC+8 16:46:30<dinf...@chromium.org> 写道:

> Hi!
>
> Please file a bug for this with information on how to reproduce this on 
> tip-of-tree. Thanks!
>
> On Wednesday, November 29, 2023 at 9:25:36 AM UTC+1 shir...@gmail.com 
> wrote:
>
>> Hi all,
>> I have compiled a debug version of the V8 dynamic library for an Android 
>> project. However, a crash has occurred while performing a Heap Snapshot. 
>> The details of the issue, including the crash stack, are as follows:
>>
>>                                                                           
>>                           # Fatal error in ../src/heap/heap-inl.h, line 251
>>
>>                                                                           
>>                           # Debug check failed: 
>> AllowHeapAllocation::IsAllowed().
>>
>>                                                                           
>>                           #FailureMessage Object: 0x6fd5268d80
>>
>> V8_Fatal(char const*, int, char const*, ...) logging.cc:203 
>> v8::base::(anonymous namespace)::DefaultDcheckHandler(char const*, int, 
>> char const*) logging.cc:64 
>> v8::internal::AllocationResult 
>> v8::internal::HeapAllocator::AllocateRaw<(v8::internal::AllocationType)0>(int,
>>  
>> v8::internal::AllocationOrigin, v8::internal::AllocationAlignment) 
>> heap-allocator-inl.h:66 
>> v8::internal::HeapObject 
>> v8::internal::HeapAllocator::AllocateRawWith<(v8::internal::HeapAllocator::AllocationRetryMode)1>(int,
>>  
>> v8::internal::AllocationType, v8::internal::AllocationOrigin, 
>> v8::internal::AllocationAlignment) heap-allocator-inl.h:221 
>> v8::internal::Factory::AllocateRaw(int, v8::internal::AllocationType, 
>> v8::internal::AllocationAlignment) factory.cc:344 
>> v8::internal::FactoryBase<v8::internal::Factory>::AllocateRaw(int, 
>> v8::internal::AllocationType, v8::internal::AllocationAlignment) 
>> factory-base.cc:1140 
>> v8::internal::FactoryBase<v8::internal::Factory>::AllocateRawWithImmortalMap(int,
>>  
>> v8::internal::AllocationType, v8::internal::Map, 
>> v8::internal::AllocationAlignment) factory-base.cc:1131 
>> v8::internal::MaybeHandle<v8::internal::SeqOneByteString> 
>> v8::internal::FactoryBase<v8::internal::Factory>::NewRawStringWithMap<v8::internal::SeqOneByteString>(int,
>>  
>> v8::internal::Map, v8::internal::AllocationType) factory-base.cc:675 
>> v8::internal::FactoryBase<v8::internal::Factory>::NewRawOneByteString(int, 
>> v8::internal::AllocationType) factory-base.cc:687 
>> v8::internal::Factory::NewStringFromTwoByte(unsigned short const*, int, 
>> v8::internal::AllocationType) factory.cc:931 
>> v8::(anonymous namespace)::NewString(v8::internal::Factory*, 
>> v8::NewStringType, v8::base::Vector<unsigned short const>) api.cc:7147 
>> v8::String::NewFromTwoByte(v8::Isolate*, unsigned short const*, 
>> v8::NewStringType, int) api.cc:7204 
>> convertToString(v8::Global<v8::Context> const&, v8::Isolate*, 
>> v8_inspector::StringView) v8inspector_channel.cpp:32 
>> V8InspectorChannelImpl::sendNotification(std::__ndk1::unique_ptr<v8_inspector::StringBuffer,
>>  
>> std::__ndk1::default_delete<v8_inspector::StringBuffer>>) 
>> v8inspector_channel.cpp:54 
>> v8_inspector::V8InspectorSessionImpl::SendProtocolNotification(std::__ndk1::unique_ptr<v8_crdtp::Serializable,
>>  
>> std::__ndk1::default_delete<v8_crdtp::Serializable>>) 
>> v8-inspector-session-impl.cc:221 
>> non-virtual thunk to 
>> v8_inspector::V8InspectorSessionImpl::SendProtocolNotification(std::__ndk1::unique_ptr<v8_crdtp::Serializable,
>>  
>> std::__ndk1::default_delete<v8_crdtp::Serializable>>) 0x0000005593df4290
>> v8_inspector::protocol::HeapProfiler::Frontend::reportHeapSnapshotProgress(int,
>>  
>> int, v8_crdtp::detail::ValueMaybe<bool>) 0x0000005593d987f4
>>
>> v8_inspector::(anonymous 
>> namespace)::HeapSnapshotProgress::ReportProgressValue(unsigned int, 
>> unsigned int) v8-heap-profiler-agent-impl.cc:40 
>> v8::internal::HeapSnapshotGenerator::ProgressReport(bool) 
>> heap-snapshot-generator.cc:2765
>>
>> v8::internal::V8HeapExplorer::IterateAndExtractReferences(v8::internal::HeapSnapshotGenerator*)
>>  
>> heap-snapshot-generator.cc:2115
>>
>> v8::internal::HeapSnapshotGenerator::FillReferences() 
>> heap-snapshot-generator.cc:2778 
>> v8::internal::HeapSnapshotGenerator::GenerateSnapshot() 
>> heap-snapshot-generator.cc:2737 
>> v8::internal::HeapProfiler::TakeSnapshot(v8::HeapProfiler::HeapSnapshotOptions)
>>  
>> heap-profiler.cc:96 
>> v8::HeapProfiler::TakeHeapSnapshot(v8::HeapProfiler::HeapSnapshotOptions 
>> const&) api.cc:10670 
>> v8_inspector::V8HeapProfilerAgentImpl::takeHeapSnapshot(v8_crdtp::detail::ValueMaybe<bool>,
>>  
>> v8_crdtp::detail::ValueMaybe<bool>, v8_crdtp::detail::ValueMaybe<bool>, 
>> v8_crdtp::detail::ValueMaybe<bool>) v8-heap-profiler-agent-impl.cc:298 
>> v8_inspector::protocol::HeapProfiler::DomainDispatcherImpl::takeHeapSnapshot(v8_crdtp::Dispatchable
>>  
>> const&) 0x0000005593d9a184
>>
>

-- 
-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/v8-dev/409a9bd7-303e-4022-89d7-96a8c7e5bfabn%40googlegroups.com.

Reply via email to