Bug 1226489

Summary: [LegacyX86] nodejs-electron: node-gyp hangs at 100% CPU in v8::internal::compiler::turboshaft::RedundantStoreAnalysis::ProcessBlock
Product: [openSUSE] openSUSE Tumbleweed Reporter: Bruno Pitrus <brunopitrus>
Component: X11 ApplicationsAssignee: Bruno Pitrus <brunopitrus>
Status: CONFIRMED --- QA Contact: E-mail List <qa-bugs>
Severity: Major    
Priority: P5 - None    
Version: Current   
Target Milestone: ---   
Hardware: i686   
OS: openSUSE Tumbleweed   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---

Description Bruno Pitrus 2024-06-18 17:18:51 UTC
Stack trace:

Thread 6 (Thread 0xee6fab40 (LWP 61959) "electron"):
#0  0x592d315b in v8::internal::compiler::turboshaft::MaybeRedundantStoresTable::map_to_key(v8::internal::compiler::turboshaft::OpIndex, int, unsigned char) ()
#1  0x592d36fd in v8::internal::compiler::turboshaft::RedundantStoreAnalysis::ProcessBlock(v8::internal::compiler::turboshaft::Block const&) ()
#2  0x592ffd15 in void v8::internal::compiler::turboshaft::GraphVisitor<v8::internal::compiler::turboshaft::ReducerStack<v8::internal::compiler::turboshaft::Assembler<v8::internal::compiler::turboshaft::reducer_list<v8::internal::compiler::turboshaft::TurboshaftAssemblerOpInterface, v8::internal::compiler::turboshaft::GraphVisitor, v8::internal::compiler::turboshaft::StoreStoreEliminationReducer, v8::internal::compiler::turboshaft::LateLoadEliminationReducer, v8::internal::compiler::turboshaft::VariableReducer, v8::internal::compiler::turboshaft::MachineOptimizationReducer, v8::internal::compiler::turboshaft::RequiredOptimizationReducer, v8::internal::compiler::turboshaft::BranchEliminationReducer, v8::internal::compiler::turboshaft::ValueNumberingReducer, v8::internal::compiler::turboshaft::TSReducerBase> >, true, v8::internal::compiler::turboshaft::StoreStoreEliminationReducer, v8::internal::compiler::turboshaft::LateLoadEliminationReducer, v8::internal::compiler::turboshaft::VariableReducer, v8::internal::compiler::turboshaft::MachineOptimizationReducer, v8::internal::compiler::turboshaft::RequiredOptimizationReducer, v8::internal::compiler::turboshaft::BranchEliminationReducer, v8::internal::compiler::turboshaft::ValueNumberingReducer, v8::internal::compiler::turboshaft::TSReducerBase> >::VisitGraph<false>() ()
#3  0x592cf424 in v8::internal::compiler::turboshaft::CopyingPhaseImpl<v8::internal::compiler::turboshaft::StoreStoreEliminationReducer, v8::internal::compiler::turboshaft::LateLoadEliminationReducer, v8::internal::compiler::turboshaft::VariableReducer, v8::internal::compiler::turboshaft::MachineOptimizationReducer, v8::internal::compiler::turboshaft::RequiredOptimizationReducer, v8::internal::compiler::turboshaft::BranchEliminationReducer, v8::internal::compiler::turboshaft::ValueNumberingReducer>::Run(v8::internal::compiler::turboshaft::Graph&, v8::internal::Zone*, bool) [clone .isra.0] ()
#4  0x58e982cb in auto v8::internal::compiler::PipelineImpl::Run<v8::internal::compiler::turboshaft::StoreStoreEliminationPhase>() ()
#5  0x58e9463e in v8::internal::compiler::PipelineImpl::OptimizeGraph(v8::internal::compiler::Linkage*) ()
#6  0x58e9502f in v8::internal::compiler::PipelineCompilationJob::ExecuteJobImpl(v8::internal::RuntimeCallStats*, v8::internal::LocalIsolate*) ()
#7  0x58383e75 in v8::internal::OptimizedCompilationJob::ExecuteJob(v8::internal::RuntimeCallStats*, v8::internal::LocalIsolate*) ()
#8  0x583bda80 in v8::internal::OptimizingCompileDispatcher::CompileNext(v8::internal::TurbofanCompilationJob*, v8::internal::LocalIsolate*) ()
#9  0x583bea4e in v8::internal::OptimizingCompileDispatcher::CompileTask::Run(v8::JobDelegate*) ()
#10 0x60366ecd in v8::platform::DefaultJobWorker::Run() ()
#11 0x5fd72c1f in PlatformWorkerThread () at ../../third_party/electron_node/src/node_platform.cc:43
#12 0xf366009f in start_thread (arg=<optimized out>) at pthread_create.c:447
#13 0xf36f61c8 in clone3 () at ../sysdeps/unix/sysv/linux/i386/clone3.S:111

This causes ftbfs of any Electron application on ix86.

Since that architecture is not supported officially by upstream and i don't know if anyone uses it, i'm not trying to fix it.

If you want to use electron apps on ancient hardware, this bug is up for grabs.