v8 snapshot crashed on chromium 116.0.5845.179

44 views
Skip to first unread message

Trung Le

unread,
Sep 12, 2023, 12:13:31 AM9/12/23
to v8-dev
Hi all developers and core team members

I am writing to you in hope someone would be able to provide guidance so I could understand and hopefully fix the following issue when compiling

v8_enable_debugging_features=true
is_debug=true
target_cpu = "ppc64"
v8_target_cpu = "ppc64"
use_goma = false
is_clang = true
v8_static_library=false
is_component_build = true
use_custom_libcxx = false
v8_optimized_debug = false
symbol_level = 2
v8_expose_symbols = true


I know ppc64le target is not supported but worth a shot in a dark as someone might have seen similar issue on x86_64 or arm64

FYI the patches for support ppc64le can be found at https://src.fedoraproject.org/rpms/chromium/pull-request/37

FAILED: gen/v8/embedded.S gen/v8/snapshot.cc
/usr/bin/python3 ../../v8/tools/run.py ./mksnapshot --turbo_instruction_scheduling --target_os=linux --target_arch=ppc64 --embedded_src gen/v8/embedded.S --embedded_variant Default --random-seed 314159265 --startup_src gen/v8/snapshot.cc --native-code-counters --verify-heap

# Fatal error in ../../v8/src/compiler/backend/register-allocator.cc, line 1596
# Debug check failed: data()->config()->IsAllocatableGeneralCode( operand->fixed_register_index()).
#
#FailureMessage Object: 0x7fffeae028d8
==== C stack trace ===============================

    ./mksnapshot(v8::base::debug::StackTrace::StackTrace()+0x2c) [0x104c5fa9c]
    ./mksnapshot(+0x4acdb20) [0x104c5db20]
    ./mksnapshot(V8_Fatal(char const*, int, char const*, ...)+0x124) [0x104c3a054]
    ./mksnapshot(+0x4aa989c) [0x104c3989c]
    ./mksnapshot(V8_Dcheck(char const*, int, char const*)+0x30) [0x104c3a0b0]
    ./mksnapshot(v8::internal::compiler::ConstraintBuilder::AllocateFixed(v8::internal::compiler::UnallocatedOperand*, int, bool, bool)+0x204) [0x10342fcc4]
    ./mksnapshot(v8::internal::compiler::ConstraintBuilder::MeetConstraintsBefore(int)+0x610) [0x1034308d0]
    ./mksnapshot(v8::internal::compiler::ConstraintBuilder::MeetRegisterConstraints(v8::internal::compiler::InstructionBlock const*)+0xe0) [0x103430230]
    ./mksnapshot(v8::internal::compiler::ConstraintBuilder::MeetRegisterConstraints()+0x70) [0x103430110]
    ./mksnapshot(v8::internal::compiler::MeetRegisterConstraintsPhase::Run(v8::internal::compiler::PipelineData*, v8::internal::Zone*)+0x60) [0x103831b20]
    ./mksnapshot(auto v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::MeetRegisterConstraintsPhase>()+0xd4) [0x103822f04]
    ./mksnapshot(v8::internal::compiler::PipelineImpl::AllocateRegistersForTopTier(v8::internal::RegisterConfiguration const*, v8::internal::compiler::CallDescriptor*, bool)+0x184) [0x103821214]
    ./mksnapshot(v8::internal::compiler::PipelineImpl::SelectInstructions(v8::internal::compiler::Linkage*)+0xc78) [0x103818258]
    ./mksnapshot(v8::internal::compiler::Pipeline::GenerateCodeForCodeStub(v8::internal::Isolate*, v8::internal::compiler::CallDescriptor*, v8::internal::compiler::Graph*, v8::internal::compiler::JSGraph*, v8::internal::compiler::SourcePositionTable*, v8::internal::CodeKind, char const*, v8::internal::Builtin, v8::internal::AssemblerOptions const&, v8::internal::ProfileDataFromFile const*)+0x1924) [0x103819ee4]
    ./mksnapshot(v8::internal::compiler::CodeAssembler::GenerateCode(v8::internal::compiler::CodeAssemblerState*, v8::internal::AssemblerOptions const&, v8::internal::ProfileDataFromFile const*)+0x88) [0x1034f9a88]
    ./mksnapshot(v8::internal::SetupIsolateDelegate::SetupBuiltinsInternal(v8::internal::Isolate*)+0x35d8c) [0x103b364bc]
    ./mksnapshot(v8::internal::SetupIsolateDelegate::SetupBuiltins(v8::internal::Isolate*, bool)+0x34) [0x1027e9d24]
    ./mksnapshot(v8::internal::Isolate::Init(v8::internal::SnapshotData*, v8::internal::SnapshotData*, v8::internal::SnapshotData*, bool)+0x1f30) [0x1018cd230]
    ./mksnapshot(v8::internal::Isolate::InitWithoutSnapshot()+0x30) [0x1018cb2d0]
    ./mksnapshot(v8::SnapshotCreator::SnapshotCreator(v8::Isolate*, long const*, v8::StartupData const*, bool)+0x140) [0x10146ed20]
    ./mksnapshot(v8::internal::CreateSnapshotDataBlobInternal(v8::SnapshotCreator::FunctionCodeHandling, char const*, v8::Isolate*)+0x88) [0x102424938]
    ./mksnapshot(main+0xd08) [0x10145aba8]
    /lib64/libc.so.6(+0x30f2c) [0x7fff94630f2c]
    /lib64/libc.so.6(__libc_start_main+0x1ac) [0x7fff9463116c]
Return code is -5
ninja: build stopped: subcommand failed.
error: Bad exit status from /var/tmp/rpm-tmp.kTN83s (%build)

Many thanks

Trung Le

unread,
Sep 12, 2023, 1:42:30 AM9/12/23
to v8-dev
I can tell it could be related or similar to that of reported in https://groups.google.com/g/v8-users/c/cRb9nQUFerY

Jakob Gruber

unread,
Sep 12, 2023, 1:45:45 AM9/12/23
to v8-...@googlegroups.com
Codegen is attempting to use a register that is not available (it is not part of the allocatable register list).  Perhaps it's trying to satisfy an invalid register assignment request from interface-descriptors? 

--
--
v8-dev mailing list
v8-...@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+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/v8-dev/d231188a-bc91-4df9-bfa0-ac30b897884en%40googlegroups.com.

Trung Le

unread,
Sep 12, 2023, 2:07:25 AM9/12/23
to v8-dev
It is plausible. Codegen should use the the `ppc/register-ppc.h` instead of the `x64/register-x64.h` so there might be changes needed to be done to get codegen look up the right architecture.

Jakob Gruber

unread,
Sep 12, 2023, 2:20:08 AM9/12/23
to v8-...@googlegroups.com
On Tue, Sep 12, 2023 at 8:07 AM Trung Le <8...@tle.id.au> wrote:
It is plausible. Codegen should use the the `ppc/register-ppc.h` instead of the `x64/register-x64.h` so there might be changes needed to be done to get codegen look up the right architecture.

That's not what I meant - every architecture has this ALWAYS_ALLOCATABLE_GENERAL_REGISTERS list defined. Here it is for ppc. You'll have to find out why codegen is trying to allocate a register that is not part of this list.
 
Reply all
Reply to author
Forward
0 new messages