Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Non serialised compilation error #841

Closed
Pavel-Durov opened this issue Sep 20, 2023 · 4 comments
Closed

Non serialised compilation error #841

Pavel-Durov opened this issue Sep 20, 2023 · 4 comments
Assignees

Comments

@Pavel-Durov
Copy link
Contributor

Pavel-Durov commented Sep 20, 2023

Issue

Failing to running yklua tests with YKD_SERIALISE_COMPILATION=0

YkLua related Issues:
ykjit/yklua#43
ykjit/yklua#44
ykjit/yklua#46
ykjit/yklua#48
ykjit/yklua#52

Errors and backtraces can be found in attached issues.

Example of errors:

lua: /yk/ykllvm/llvm/lib/IR/Value.cpp:1101: void llvm::ValueHandleBase::RemoveFromUseList(): Assertion `*PrevPtr == this && "List invariant broken"' failed.
...

lua: /yk/target/debug/ykllvm/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h:134: decltype(auto) llvm::orc::ThreadSafeModule::withModuleDo(Func &&) [Func = (lambda at src/ykllvmwrap.cc:408:30)]: Assertion `M && "Can not call on null module"' failed.
...

lua: /yk/ykllvm/llvm/lib/IR/Value.cpp:1101: void llvm::ValueHandleBase::RemoveFromUseList(): Assertion `*PrevPtr == this && "List invariant broken"' failed.
....
lua: /yk/ykllvm/llvm/lib/IR/Value.cpp:285: llvm::ValueName* llvm::Value::getValueName() const: Assertion `I != Ctx.pImpl->ValueNames.end() && "No name entry found!"' failed.
lua: /yk/ykllvm/llvm/lib/IR/Value.cpp:285: llvm::ValueName* llvm::Value::getValueName() const: Assertion `I != Ctx.pImpl->ValueNames.end() && "No name entry found!"' failed.
...
lua: /yk/ykllvm/llvm/include/llvm/ADT/ScopedHashTable.h:248: llvm::ScopedHashTableScope<K, V, KInfo, AllocatorTy>::~ScopedHashTableScope() [with K = llvm::MemoryLocation; V = unsigned int; KInfo = llvm::DenseMapInfo<llvm::MemoryLocation>; AllocatorTy = llvm::RecyclingAllocator<llvm::BumpPtrAllocatorImpl<>, llvm::ScopedHashTableVal<llvm::MemoryLocation, unsigned int> >]: Assertion `KeyEntry == ThisEntry && "Scope imbalance!"' failed.

lua: /yk/target/debug/ykllvm/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h:134: decltype(auto) llvm::orc::ThreadSafeModule::withModuleDo(Func &&) [Func = (lambda at src/ykllvmwrap.cc:408:30)]: Assertion `M && "Can not call on null module"' failed.
@Pavel-Durov Pavel-Durov changed the title Non serialised compilation Non serialised compilation error Sep 20, 2023
@Pavel-Durov
Copy link
Contributor Author

Stacktraces of lua sorting:

a = {}
for i=1,50000 do
  a[i] = math.random()
end

table.sort(a, function(x,y) return y<x end)
YKD_SERIALISE_COMPILATION=0 gdb -batch --ex 'r' --ex 'bt' --args ../src/lua -e"_U=true" ./example.lua  

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffee59d6c0 (LWP 2452124)]
[Thread 0x7fffee59d6c0 (LWP 2452124) exited]
[New Thread 0x7fffee59d6c0 (LWP 2452125)]
lua: /yk/ykllvm/llvm/include/llvm/CodeGen/ValueTypes.h:289: llvm::MVT llvm::EVT::getSimpleVT() const: Assertion `isSimple() && "Expected a SimpleValueType!"' failed.

Thread 3 "lua" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffee59d6c0 (LWP 2452125)]
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44	./nptl/pthread_kill.c: No such file or directory.
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1  0x00007ffff78a9d9f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x00007ffff785af32 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007ffff7845472 in __GI_abort () at ./stdlib/abort.c:79
#4  0x00007ffff7845395 in __assert_fail_base (fmt=0x7ffff79b9a90 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7ffff7208c40 "isSimple() && \"Expected a SimpleValueType!\"", file=file@entry=0x7ffff7208c00 "/yk/ykllvm/llvm/include/llvm/CodeGen/ValueTypes.h", line=line@entry=289, function=function@entry=0x7ffff7208bd0 "llvm::MVT llvm::EVT::getSimpleVT() const") at ./assert/assert.c:92
#5  0x00007ffff7853e32 in __GI___assert_fail (assertion=0x7ffff7208c40 "isSimple() && \"Expected a SimpleValueType!\"", file=0x7ffff7208c00 "/yk/ykllvm/llvm/include/llvm/CodeGen/ValueTypes.h", line=289, function=0x7ffff7208bd0 "llvm::MVT llvm::EVT::getSimpleVT() const") at ./assert/assert.c:101
#6  0x00007ffff6f82540 in (anonymous namespace)::X86DAGToDAGISel::Select(llvm::SDNode*) () from /yk/target/debug/ykllvm/lib/libLLVMX86CodeGen.so.16git
#7  0x00007ffff4f101e5 in llvm::SelectionDAGISel::DoInstructionSelection() () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#8  0x00007ffff4f1e0e5 in llvm::SelectionDAGISel::CodeGenAndEmitDAG() () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#9  0x00007ffff4f21980 in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#10 0x00007ffff4f237ff in llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) [clone .part.0] () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#11 0x00007ffff6f836a5 in (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) () from /yk/target/debug/ykllvm/lib/libLLVMX86CodeGen.so.16git
#12 0x00007ffff456da9b in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) [clone .part.0] () from /yk/target/debug/ykllvm/lib/../lib/libLLVMCodeGen.so.16git
#13 0x00007ffff5a67570 in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /yk/target/debug/ykllvm/lib/libLLVMCore.so.16git
#14 0x00007ffff5a676b1 in llvm::FPPassManager::runOnModule(llvm::Module&) () from /yk/target/debug/ykllvm/lib/libLLVMCore.so.16git
#15 0x00007ffff5a67f77 in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /yk/target/debug/ykllvm/lib/libLLVMCore.so.16git
#16 0x00007ffff7df49bf in llvm::MCJIT::emitObject(llvm::Module*) () from /yk/target/debug/ykllvm/lib/libLLVMMCJIT.so.16git
#17 0x00007ffff7df5282 in llvm::MCJIT::generateCodeForModule(llvm::Module*) () from /yk/target/debug/ykllvm/lib/libLLVMMCJIT.so.16git
#18 0x00007ffff7def504 in llvm::MCJIT::finalizeObject() () from /yk/target/debug/ykllvm/lib/libLLVMMCJIT.so.16git
#19 0x00007ffff7bedcc1 in compileModule (TraceName="__yk_compiled_trace_0", M=0x7fffeab08f80, GlobalMappings=std::map with 3 elements = {...}, LiveAOTVals=0x7fffeab177a0, GuardCount=39) at src/ykllvmwrap.cc:266
#20 0x00007ffff7bef7ab in compileIRTrace<std::tuple<llvm::Module*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<llvm::GlobalValue*, void*, std::less<llvm::GlobalValue*>, std::allocator<std::pair<llvm::GlobalValue* const, void*> > >, void*, unsigned long> (*)(llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long)> (Func=0x7ffff7bf9b00 <createModule[abi:cxx11](llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long)>, FuncNames=0x7fffe8089b40, BBs=0x7fffe808a360, TraceLen=258, FAddrKeys=0x7fffe808ad40, FAddrVals=0x7fffe808ae50, FAddrLen=20, BitcodeData=0x257ae0 <llvm.embedded[module]+8>, BitcodeLen=3622916, DebugInfoFD=-1, DebugInfoPath=0x0) at src/ykllvmwrap.cc:442
#21 0x00007ffff7bef4de in __yktracec_irtrace_compile (FuncNames=0x7fffe8089b40, BBs=0x7fffe808a360, TraceLen=258, FAddrKeys=0x7fffe808ad40, FAddrVals=0x7fffe808ae50, FAddrLen=20, BitcodeData=0x257ae0 <llvm.embedded[module]+8>, BitcodeLen=3622916, DebugInfoFD=-1, DebugInfoPath=0x0) at src/ykllvmwrap.cc:450
#22 0x00007ffff7a7a0f8 in ykrt::compile::jitc_llvm::{impl#0}::compile (self=0x91d720, mt=..., irtrace=...) at ykrt/src/compile/jitc_llvm.rs:38
#23 0x00007ffff7a7ccad in ykrt::mt::{impl#0}::queue_compile_job::{closure#0} () at ykrt/src/mt.rs:397
#24 0x00007ffff7a63bce in core::ops::function::FnOnce::call_once<ykrt::mt::{impl#0}::queue_compile_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/ops/function.rs:250
#25 0x00007ffff7a63928 in alloc::boxed::{impl#47}::call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (self=..., args=()) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/alloc/src/boxed.rs:2007
#26 0x00007ffff7a830ab in lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex, alloc::collections::vec_deque::VecDeque<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global>>::unlocked<parking_lot::raw_mutex::RawMutex, alloc::collections::vec_deque::VecDeque<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global>, alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, ()> (s=0x7fffee59c9e0, f=...) at /home/pd/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lock_api-0.4.10/src/mutex.rs:567
#27 0x00007ffff7a7b4d1 in ykrt::mt::{impl#0}::queue_job::{closure#0} () at ykrt/src/mt.rs:168
#28 0x00007ffff7a7d3b3 in std::sys_common::backtrace::__rust_begin_short_backtrace<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/sys_common/backtrace.rs:154
#29 0x00007ffff7a6a254 in std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/thread/mod.rs:529
#30 0x00007ffff7a6f424 in core::panic::unwind_safe::{impl#23}::call_once<(), std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>> (self=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/panic/unwind_safe.rs:271
#31 0x00007ffff7a6ea77 in std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>, ()> (data=0x7fffee59cb00) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panicking.rs:526
#32 0x00007ffff7a6ecdb in __rust_try () from /yk/bin/../target/debug/deps/libykcapi.so
#33 0x00007ffff7a6e97e in std::panicking::try<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panicking.rs:490
#34 0x00007ffff7a6a096 in std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>, ()> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panic.rs:142
#35 std::thread::{impl#0}::spawn_unchecked_::{closure#1}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/thread/mod.rs:528
#36 0x00007ffff7a63caf in core::ops::function::FnOnce::call_once<std::thread::{impl#0}::spawn_unchecked_::{closure_env#1}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/ops/function.rs:250
#37 0x00007ffff7c801e5 in alloc::boxed::{impl#47}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:2007
#38 alloc::boxed::{impl#47}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:2007
#39 std::sys::unix::thread::{impl#2}::new::thread_start () at library/std/src/sys/unix/thread.rs:108
#40 0x00007ffff78a8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#41 0x00007ffff79285fc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
YKD_SERIALISE_COMPILATION=0 gdb -batch --ex 'r' --ex 'bt' --args ../src/lua -e"_U=true" ./example.lua  

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffee59d6c0 (LWP 2451224)]
[Thread 0x7fffee59d6c0 (LWP 2451224) exited]
[New Thread 0x7fffee59d6c0 (LWP 2451225)]
lua: /yk/ykllvm/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:8144: llvm::SDValue llvm::SelectionDAG::getStore(llvm::SDValue, const llvm::SDLoc&, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*): Assertion `Chain.getValueType() == MVT::Other && "Invalid chain type"' failed.

Thread 3 "lua" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffee59d6c0 (LWP 2451225)]
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44	./nptl/pthread_kill.c: No such file or directory.
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1  0x00007ffff78a9d9f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x00007ffff785af32 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007ffff7845472 in __GI_abort () at ./stdlib/abort.c:79
#4  0x00007ffff7845395 in __assert_fail_base (fmt=0x7ffff79b9a90 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7ffff5011870 "Chain.getValueType() == MVT::Other && \"Invalid chain type\"", file=file@entry=0x7ffff500c398 "/yk/ykllvm/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp", line=line@entry=8144, function=function@entry=0x7ffff5014228 "llvm::SDValue llvm::SelectionDAG::getStore(llvm::SDValue, const llvm::SDLoc&, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*)") at ./assert/assert.c:92
#5  0x00007ffff7853e32 in __GI___assert_fail (assertion=0x7ffff5011870 "Chain.getValueType() == MVT::Other && \"Invalid chain type\"", file=0x7ffff500c398 "/yk/ykllvm/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp", line=8144, function=0x7ffff5014228 "llvm::SDValue llvm::SelectionDAG::getStore(llvm::SDValue, const llvm::SDLoc&, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*)") at ./assert/assert.c:101
#6  0x00007ffff4ed0077 in llvm::SelectionDAG::getStore(llvm::SDValue, llvm::SDLoc const&, llvm::SDValue, llvm::SDValue, llvm::MachineMemOperand*) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#7  0x00007ffff4f303d0 in lowerIncomingStatepointValue(llvm::SDValue, bool, llvm::SmallVectorImpl<llvm::SDValue>&, llvm::SmallVectorImpl<llvm::MachineMemOperand*>&, llvm::SelectionDAGBuilder&) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#8  0x00007ffff4f33baf in llvm::SelectionDAGBuilder::LowerAsSTATEPOINT(llvm::SelectionDAGBuilder::StatepointLoweringInfo&) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#9  0x00007ffff4f36568 in llvm::SelectionDAGBuilder::LowerCallSiteWithDeoptBundleImpl(llvm::CallBase const*, llvm::SDValue, llvm::BasicBlock const*, bool, bool) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#10 0x00007ffff4f36826 in llvm::SelectionDAGBuilder::LowerDeoptimizeCall(llvm::CallInst const*) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#11 0x00007ffff4e6535f in llvm::SelectionDAGBuilder::visitIntrinsicCall(llvm::CallInst const&, unsigned int) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#12 0x00007ffff4e9c290 in llvm::SelectionDAGBuilder::visit(llvm::Instruction const&) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#13 0x00007ffff4f20607 in llvm::SelectionDAGISel::SelectBasicBlock(llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, true>, bool&) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#14 0x00007ffff4f21980 in llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function const&) () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#15 0x00007ffff4f237ff in llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) [clone .part.0] () from /yk/target/debug/ykllvm/lib/../lib/libLLVMSelectionDAG.so.16git
#16 0x00007ffff6f836a5 in (anonymous namespace)::X86DAGToDAGISel::runOnMachineFunction(llvm::MachineFunction&) () from /yk/target/debug/ykllvm/lib/libLLVMX86CodeGen.so.16git
#17 0x00007ffff456da9b in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) [clone .part.0] () from /yk/target/debug/ykllvm/lib/../lib/libLLVMCodeGen.so.16git
#18 0x00007ffff5a67570 in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /yk/target/debug/ykllvm/lib/libLLVMCore.so.16git
#19 0x00007ffff5a676b1 in llvm::FPPassManager::runOnModule(llvm::Module&) () from /yk/target/debug/ykllvm/lib/libLLVMCore.so.16git
#20 0x00007ffff5a67f77 in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /yk/target/debug/ykllvm/lib/libLLVMCore.so.16git
#21 0x00007ffff7df49bf in llvm::MCJIT::emitObject(llvm::Module*) () from /yk/target/debug/ykllvm/lib/libLLVMMCJIT.so.16git
#22 0x00007ffff7df5282 in llvm::MCJIT::generateCodeForModule(llvm::Module*) () from /yk/target/debug/ykllvm/lib/libLLVMMCJIT.so.16git
#23 0x00007ffff7def504 in llvm::MCJIT::finalizeObject() () from /yk/target/debug/ykllvm/lib/libLLVMMCJIT.so.16git
#24 0x00007ffff7bedcc1 in compileModule (TraceName="__yk_compiled_trace_0", M=0x7fffeab07c80, GlobalMappings=std::map with 3 elements = {...}, LiveAOTVals=0x7fffeab31520, GuardCount=39) at src/ykllvmwrap.cc:266
#25 0x00007ffff7bef7ab in compileIRTrace<std::tuple<llvm::Module*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<llvm::GlobalValue*, void*, std::less<llvm::GlobalValue*>, std::allocator<std::pair<llvm::GlobalValue* const, void*> > >, void*, unsigned long> (*)(llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long)> (Func=0x7ffff7bf9b00 <createModule[abi:cxx11](llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long)>, FuncNames=0x7fffe808a0d0, BBs=0x7fffe808a910, TraceLen=263, FAddrKeys=0x7fffe81656a0, FAddrVals=0x7fffe81657b0, FAddrLen=20, BitcodeData=0x257ae0 <llvm.embedded[module]+8>, BitcodeLen=3622916, DebugInfoFD=-1, DebugInfoPath=0x0) at src/ykllvmwrap.cc:442
#26 0x00007ffff7bef4de in __yktracec_irtrace_compile (FuncNames=0x7fffe808a0d0, BBs=0x7fffe808a910, TraceLen=263, FAddrKeys=0x7fffe81656a0, FAddrVals=0x7fffe81657b0, FAddrLen=20, BitcodeData=0x257ae0 <llvm.embedded[module]+8>, BitcodeLen=3622916, DebugInfoFD=-1, DebugInfoPath=0x0) at src/ykllvmwrap.cc:450
#27 0x00007ffff7a7a0f8 in ykrt::compile::jitc_llvm::{impl#0}::compile (self=0x91d720, mt=..., irtrace=...) at ykrt/src/compile/jitc_llvm.rs:38
#28 0x00007ffff7a7ccad in ykrt::mt::{impl#0}::queue_compile_job::{closure#0} () at ykrt/src/mt.rs:397
#29 0x00007ffff7a63bce in core::ops::function::FnOnce::call_once<ykrt::mt::{impl#0}::queue_compile_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/ops/function.rs:250
#30 0x00007ffff7a63928 in alloc::boxed::{impl#47}::call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (self=..., args=()) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/alloc/src/boxed.rs:2007
#31 0x00007ffff7a830ab in lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex, alloc::collections::vec_deque::VecDeque<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global>>::unlocked<parking_lot::raw_mutex::RawMutex, alloc::collections::vec_deque::VecDeque<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global>, alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, ()> (s=0x7fffee59c9e0, f=...) at /home/pd/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lock_api-0.4.10/src/mutex.rs:567
#32 0x00007ffff7a7b4d1 in ykrt::mt::{impl#0}::queue_job::{closure#0} () at ykrt/src/mt.rs:168
#33 0x00007ffff7a7d3b3 in std::sys_common::backtrace::__rust_begin_short_backtrace<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/sys_common/backtrace.rs:154
#34 0x00007ffff7a6a254 in std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/thread/mod.rs:529
#35 0x00007ffff7a6f424 in core::panic::unwind_safe::{impl#23}::call_once<(), std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>> (self=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/panic/unwind_safe.rs:271
#36 0x00007ffff7a6ea77 in std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>, ()> (data=0x7fffee59cb00) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panicking.rs:526
#37 0x00007ffff7a6ecdb in __rust_try () from /yk/bin/../target/debug/deps/libykcapi.so
#38 0x00007ffff7a6e97e in std::panicking::try<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panicking.rs:490
#39 0x00007ffff7a6a096 in std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>, ()> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panic.rs:142
#40 std::thread::{impl#0}::spawn_unchecked_::{closure#1}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/thread/mod.rs:528
#41 0x00007ffff7a63caf in core::ops::function::FnOnce::call_once<std::thread::{impl#0}::spawn_unchecked_::{closure_env#1}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/ops/function.rs:250
#42 0x00007ffff7c801e5 in alloc::boxed::{impl#47}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:2007
#43 alloc::boxed::{impl#47}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:2007
#44 std::sys::unix::thread::{impl#2}::new::thread_start () at library/std/src/sys/unix/thread.rs:108
#45 0x00007ffff78a8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#46 0x00007ffff79285fc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

@Pavel-Durov
Copy link
Contributor Author

Pavel-Durov commented Sep 27, 2023

Added logs in getConstant and processCallSite (@ptersilie request).
Stack trace + logs:

YKD_SERIALISE_COMPILATION=0 gdb -batch --ex 'r' --ex 'bt' --args ../src/lua -e"_U=true" ./mre.lua

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffee59d6c0 (LWP 2564435)]
[Thread 0x7fffee59d6c0 (LWP 2564435) exited]
[New Thread 0x7fffee59d6c0 (LWP 2564437)]
[YK] Instruction:   br i1 %460, label %guardsuccess2, label %guardfail1, Value:   %459 = load i8, ptr %458, align 8, !dbg !9443
[YK] Instruction:   br i1 %470, label %guardfail3, label %guardsuccess4, Value:   %469 = load i64, ptr %468, align 8, !dbg !9447
[YK] Instruction:   br i1 %511, label %guardfail5, label %guardsuccess6, Value:   %508 = load i32, ptr %507, align 4, !dbg !9476
[YK] Instruction:   br i1 %.not, label %guardfail7, label %guardsuccess8, Value:   %520 = load i32, ptr %509, align 4, !dbg !9482
[YK] Instruction:   br i1 %531, label %guardsuccess10, label %guardfail9, Value:   %530 = load i32, ptr %17, align 4, !dbg !9487
[YK] Instruction:   br i1 %548, label %guardsuccess12, label %guardfail11, Value:   %546 = load i32, ptr %19, align 4, !dbg !9442
[YK] Instruction:   br i1 %573, label %guardsuccess14, label %guardfail13, Value:   %572 = load i8, ptr %571, align 8, !dbg !9500
[YK] Instruction:   br i1 %587, label %guardfail15, label %guardsuccess16, Value:   %585 = load i8, ptr %584, align 8, !dbg !9500
[YK] Instruction:   br i1 %609, label %guardfail17, label %guardsuccess18, Value:   %607 = load i32, ptr %606, align 4, !dbg !9476
[YK] Instruction:   br i1 %.not115, label %guardfail19, label %guardsuccess20, Value:   %618 = load i32, ptr %509, align 4, !dbg !9482
[YK] Instruction:   br i1 %629, label %guardsuccess22, label %guardfail21, Value:   %628 = load i32, ptr %17, align 4, !dbg !9487
[YK] Instruction:   br i1 %646, label %guardsuccess24, label %guardfail23, Value:   %644 = load i32, ptr %19, align 4, !dbg !9442
[YK] Instruction:   br i1 %671, label %guardsuccess26, label %guardfail25, Value:   %670 = load i8, ptr %669, align 8, !dbg !9500
[YK] Instruction:   br i1 %685, label %guardfail27, label %guardsuccess28, Value:   %683 = load i8, ptr %682, align 8, !dbg !9500
[YK] Instruction:   br i1 %707, label %guardfail29, label %guardsuccess30, Value:   %705 = load i32, ptr %704, align 4, !dbg !9476
[YK] Instruction:   br i1 %.not116, label %guardfail31, label %guardsuccess32, Value:   %716 = load i32, ptr %509, align 4, !dbg !9482
[YK] Instruction:   br i1 %727, label %guardsuccess34, label %guardfail33, Value:   %726 = load i32, ptr %17, align 4, !dbg !9487
[YK] Instruction:   br i1 %744, label %guardsuccess36, label %guardfail35, Value:   %742 = load i32, ptr %19, align 4, !dbg !9442
[YK] Instruction:   br i1 %766, label %guardsuccess38, label %guardfail37, Value:   %765 = load i8, ptr %764, align 8, !dbg !9513
[YK] Instruction:   br i1 %780, label %guardfail39, label %guardsuccess40, Value:   %778 = load i8, ptr %777, align 8, !dbg !9513
[YK] Instruction:   br i1 %802, label %guardfail41, label %guardsuccess42, Value:   %800 = load i32, ptr %799, align 4, !dbg !9476
[YK] Instruction:   br i1 %.not117, label %guardfail43, label %guardsuccess44, Value:   %811 = load i32, ptr %509, align 4, !dbg !9482
[YK] Instruction:   br i1 %822, label %guardsuccess46, label %guardfail45, Value:   %821 = load i32, ptr %17, align 4, !dbg !9487
[YK] Instruction:   br i1 %839, label %guardsuccess48, label %guardfail47, Value:   %837 = load i32, ptr %19, align 4, !dbg !9442
[YK] Instruction:   br i1 %851, label %guardfail49, label %guardsuccess50, Value:   %846 = load i32, ptr %19, align 4, !dbg !9519
[YK] Instruction:   br i1 %871, label %guardsuccess52, label %guardfail51, Value:   %870 = call ptr @luaD_precall(ptr noundef %867, ptr noundef %868, i32 noundef %869), !dbg !9538
[YK] Instruction:   br i1 %890, label %guardfail53, label %guardsuccess54, Value:   %888 = load i32, ptr %887, align 4, !dbg !9476
[YK] Instruction:   br i1 %.not118, label %guardfail55, label %guardsuccess56, Value:   %899 = load i32, ptr %509, align 4, !dbg !9482
[YK] Instruction:   br i1 %910, label %guardsuccess58, label %guardfail57, Value:   %909 = load i32, ptr %17, align 4, !dbg !9487
[YK] Instruction:   br i1 %927, label %guardsuccess60, label %guardfail59, Value:   %925 = load i32, ptr %19, align 4, !dbg !9442
[YK] Instruction:   br i1 %941, label %guardsuccess62, label %guardfail61, Value:   %935 = load i32, ptr %19, align 4, !dbg !9542
[YK] Instruction:   br i1 %956, label %guardsuccess64, label %guardfail63, Value:   %955 = load i8, ptr %954, align 8, !dbg !9547
[YK] Instruction:   br i1 %968, label %guardsuccess66, label %guardfail65, Value:   %967 = load i8, ptr %966, align 8, !dbg !9550
[YK] Instruction:   br i1 %982, label %guardsuccess68, label %guardfail67, Value:   %982 = icmp ult i64 %976, %981, !dbg !9550
[YK] Instruction:   br i1 %999, label %guardsuccess70, label %guardfail69, Value:   %997 = load i8, ptr %996, align 8, !dbg !9550
[YK] Instruction:   br i1 %1029, label %guardsuccess72, label %guardfail71, Value:   %1027 = load i32, ptr %1026, align 4, !dbg !9476
[YK] Instruction:   br i1 %1051, label %guardsuccess76, label %guardfail75, Value:   %1050 = load i32, ptr %17, align 4, !dbg !9487
[YK] Instruction:   %3 = load ptr, ptr %0, align 8, Value: ptr %0
[YK] Instruction:   %5 = load ptr, ptr %4, align 8, Value:   %4 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 1, !dbg !9435
[YK] Instruction:   %7 = load ptr, ptr %6, align 8, Value:   %6 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 2, !dbg !9435
[YK] Instruction:   %9 = load ptr, ptr %8, align 8, Value:   %8 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 3, !dbg !9435
[YK] Instruction:   %11 = load ptr, ptr %10, align 8, Value:   %10 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 4, !dbg !9435
[YK] Instruction:   %13 = load ptr, ptr %12, align 8, Value:   %12 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 5, !dbg !9435
[YK] Instruction:   %15 = load ptr, ptr %14, align 8, Value:   %14 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 6, !dbg !9435
[YK] Instruction:   %17 = load ptr, ptr %16, align 8, Value:   %16 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 7, !dbg !9435
[YK] Instruction:   %19 = load ptr, ptr %18, align 8, Value:   %18 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 8, !dbg !9435
[YK] Instruction:   %21 = load ptr, ptr %20, align 8, Value:   %20 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 9, !dbg !9435
[YK] Instruction:   %23 = load ptr, ptr %22, align 8, Value:   %22 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 10, !dbg !9435
[YK] Instruction:   %25 = load ptr, ptr %24, align 8, Value:   %24 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 11, !dbg !9435
[YK] Instruction:   %27 = load ptr, ptr %26, align 8, Value:   %26 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 12, !dbg !9435
[YK] Instruction:   %29 = load ptr, ptr %28, align 8, Value:   %28 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 13, !dbg !9435
[YK] Instruction:   %31 = load ptr, ptr %30, align 8, Value:   %30 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 14, !dbg !9435
[YK] Instruction:   %33 = load ptr, ptr %32, align 8, Value:   %32 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 15, !dbg !9435
[YK] Instruction:   %35 = load ptr, ptr %34, align 8, Value:   %34 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 16, !dbg !9435
[YK] Instruction:   %37 = load ptr, ptr %36, align 8, Value:   %36 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 17, !dbg !9435
[YK] Instruction:   %39 = load ptr, ptr %38, align 8, Value:   %38 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 18, !dbg !9435
[YK] Instruction:   %41 = load ptr, ptr %40, align 8, Value:   %40 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 19, !dbg !9435
[YK] Instruction:   %43 = load ptr, ptr %42, align 8, Value:   %42 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 20, !dbg !9435
[YK] Instruction:   %45 = load ptr, ptr %44, align 8, Value:   %44 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 21, !dbg !9435
[YK] Instruction:   %47 = load ptr, ptr %46, align 8, Value:   %46 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 22, !dbg !9435
[YK] Instruction:   %49 = load ptr, ptr %48, align 8, Value:   %48 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 23, !dbg !9435
[YK] Instruction:   %51 = load ptr, ptr %50, align 8, Value:   %50 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 24, !dbg !9435
[YK] Instruction:   %53 = load ptr, ptr %52, align 8, Value:   %52 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 25, !dbg !9435
[YK] Instruction:   %55 = load ptr, ptr %54, align 8, Value:   %54 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 26, !dbg !9435
[YK] Instruction:   %57 = load ptr, ptr %56, align 8, Value:   %56 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 27, !dbg !9435
[YK] Instruction:   %59 = load ptr, ptr %58, align 8, Value:   %58 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 28, !dbg !9435
[YK] Instruction:   %61 = load ptr, ptr %60, align 8, Value:   %60 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 29, !dbg !9435
[YK] Instruction:   %63 = load ptr, ptr %62, align 8, Value:   %62 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 30, !dbg !9435
[YK] Instruction:   %65 = load ptr, ptr %64, align 8, Value:   %64 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 31, !dbg !9435
[YK] Instruction:   %67 = load ptr, ptr %66, align 8, Value:   %66 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 32, !dbg !9435
[YK] Instruction:   %69 = load ptr, ptr %68, align 8, Value:   %68 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 33, !dbg !9435
[YK] Instruction:   %71 = load ptr, ptr %70, align 8, Value:   %70 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 34, !dbg !9435
[YK] Instruction:   %73 = load ptr, ptr %72, align 8, Value:   %72 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 35, !dbg !9435
[YK] Instruction:   %75 = load ptr, ptr %74, align 8, Value:   %74 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 36, !dbg !9435
[YK] Instruction:   %77 = load ptr, ptr %76, align 8, Value:   %76 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 37, !dbg !9435
[YK] Instruction:   %79 = load ptr, ptr %78, align 8, Value:   %78 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 38, !dbg !9435
[YK] Instruction:   %81 = load ptr, ptr %80, align 8, Value:   %80 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 39, !dbg !9435
[YK] Instruction:   %83 = load ptr, ptr %82, align 8, Value:   %82 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 40, !dbg !9435
[YK] Instruction:   %85 = load ptr, ptr %84, align 8, Value:   %84 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 41, !dbg !9435
[YK] Instruction:   %87 = load ptr, ptr %86, align 8, Value:   %86 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 42, !dbg !9435
[YK] Instruction:   %89 = load ptr, ptr %88, align 8, Value:   %88 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 43, !dbg !9435
[YK] Instruction:   %91 = load ptr, ptr %90, align 8, Value:   %90 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 44, !dbg !9435
[YK] Instruction:   %93 = load ptr, ptr %92, align 8, Value:   %92 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 45, !dbg !9435
[YK] Instruction:   %95 = load ptr, ptr %94, align 8, Value:   %94 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 46, !dbg !9435
[YK] Instruction:   %97 = load ptr, ptr %96, align 8, Value:   %96 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 47, !dbg !9435
[YK] Instruction:   %99 = load ptr, ptr %98, align 8, Value:   %98 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 48, !dbg !9435
[YK] Instruction:   %101 = load ptr, ptr %100, align 8, Value:   %100 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 49, !dbg !9435
[YK] Instruction:   %103 = load ptr, ptr %102, align 8, Value:   %102 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 50, !dbg !9435
[YK] Instruction:   %105 = load ptr, ptr %104, align 8, Value:   %104 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 51, !dbg !9435
[YK] Instruction:   %107 = load ptr, ptr %106, align 8, Value:   %106 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 52, !dbg !9435
[YK] Instruction:   %109 = load ptr, ptr %108, align 8, Value:   %108 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 53, !dbg !9435
[YK] Instruction:   %111 = load ptr, ptr %110, align 8, Value:   %110 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 54, !dbg !9435
[YK] Instruction:   %113 = load ptr, ptr %112, align 8, Value:   %112 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 55, !dbg !9435
[YK] Instruction:   %115 = load ptr, ptr %114, align 8, Value:   %114 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 56, !dbg !9435
[YK] Instruction:   %117 = load ptr, ptr %116, align 8, Value:   %116 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 57, !dbg !9435
[YK] Instruction:   %119 = load ptr, ptr %118, align 8, Value:   %118 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 58, !dbg !9435
[YK] Instruction:   %121 = load ptr, ptr %120, align 8, Value:   %120 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 59, !dbg !9435
[YK] Instruction:   %123 = load ptr, ptr %122, align 8, Value:   %122 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 60, !dbg !9435
[YK] Instruction:   %125 = load ptr, ptr %124, align 8, Value:   %124 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 61, !dbg !9435
[YK] Instruction:   %127 = load ptr, ptr %126, align 8, Value:   %126 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 62, !dbg !9435
[YK] Instruction:   %129 = load ptr, ptr %128, align 8, Value:   %128 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 63, !dbg !9435
[YK] Instruction:   %131 = load ptr, ptr %130, align 8, Value:   %130 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 64, !dbg !9435
[YK] Instruction:   %133 = load ptr, ptr %132, align 8, Value:   %132 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 65, !dbg !9435
[YK] Instruction:   %135 = load ptr, ptr %134, align 8, Value:   %134 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 66, !dbg !9435
[YK] Instruction:   %137 = load ptr, ptr %136, align 8, Value:   %136 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 67, !dbg !9435
[YK] Instruction:   %139 = load ptr, ptr %138, align 8, Value:   %138 = getelementptr %YkCtrlPointVars, ptr %0, i64 0, i32 68, !dbg !9435
[YK] Instruction:   %141 = load ptr, ptr %140, align 8, Value:   lua: /home/pd/yk-fork/ykllvm/llvm/lib/IR/Metadata.cpp:1216: llvm::MDNode* llvm::NamedMDNode::getOperand(unsigned int) const: Assertion `i < getNumOperands() && "Invalid Operand number!"' failed.

Thread 3 "lua" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffee59d6c0 (LWP 2564437)]
__pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
44	./nptl/pthread_kill.c: No such file or directory.
#0  __pthread_kill_implementation (threadid=<optimized out>, signo=signo@entry=6, no_tid=no_tid@entry=0) at ./nptl/pthread_kill.c:44
#1  0x00007ffff78a9d9f in __pthread_kill_internal (signo=6, threadid=<optimized out>) at ./nptl/pthread_kill.c:78
#2  0x00007ffff785af32 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26
#3  0x00007ffff7845472 in __GI_abort () at ./stdlib/abort.c:79
#4  0x00007ffff7845395 in __assert_fail_base (fmt=0x7ffff79b9a90 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion@entry=0x7ffff5c46930 "i < getNumOperands() && \"Invalid Operand number!\"", file=file@entry=0x7ffff5c45e80 "/home/pd/yk-fork/ykllvm/llvm/lib/IR/Metadata.cpp", line=line@entry=1216, function=function@entry=0x7ffff5c468f0 "llvm::MDNode* llvm::NamedMDNode::getOperand(unsigned int) const") at ./assert/assert.c:92
#5  0x00007ffff7853e32 in __GI___assert_fail (assertion=0x7ffff5c46930 "i < getNumOperands() && \"Invalid Operand number!\"", file=0x7ffff5c45e80 "/home/pd/yk-fork/ykllvm/llvm/lib/IR/Metadata.cpp", line=1216, function=0x7ffff5c468f0 "llvm::MDNode* llvm::NamedMDNode::getOperand(unsigned int) const") at ./assert/assert.c:101
#6  0x00007ffff5a721f3 in llvm::NamedMDNode::getOperand(unsigned int) const () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#7  0x00007ffff58cf4ee in llvm::SlotTracker::processModule() () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#8  0x00007ffff58d027b in llvm::SlotTracker::getLocalSlot(llvm::Value const*) () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#9  0x00007ffff58d8b9c in (anonymous namespace)::AssemblyWriter::printInstruction(llvm::Instruction const&) () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#10 0x00007ffff58ded62 in llvm::Value::print(llvm::raw_ostream&, llvm::ModuleSlotTracker&, bool) const () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#11 0x00007ffff58df3ce in llvm::Value::print(llvm::raw_ostream&, bool) const () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#12 0x00007ffff3c8fba1 in llvm::LazyValueInfo::getConstant(llvm::Value*, llvm::Instruction*) () from /home/pd/yk-fork/target/debug/ykllvm/lib/../lib/libLLVMAnalysis.so.16git
#13 0x00007ffff30af676 in runImpl(llvm::Function&, llvm::LazyValueInfo*, llvm::DominatorTree*, llvm::SimplifyQuery const&) () from /home/pd/yk-fork/target/debug/ykllvm/lib/../lib/libLLVMScalarOpts.so.16git
#14 0x00007ffff30b17cb in (anonymous namespace)::CorrelatedValuePropagation::runOnFunction(llvm::Function&) () from /home/pd/yk-fork/target/debug/ykllvm/lib/../lib/libLLVMScalarOpts.so.16git
#15 0x00007ffff5a67570 in llvm::FPPassManager::runOnFunction(llvm::Function&) () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#16 0x00007ffff3b41c4f in (anonymous namespace)::CGPassManager::runOnModule(llvm::Module&) () from /home/pd/yk-fork/target/debug/ykllvm/lib/../lib/libLLVMAnalysis.so.16git
#17 0x00007ffff5a67f77 in llvm::legacy::PassManagerImpl::run(llvm::Module&) () from /home/pd/yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#18 0x00007ffff7bef6c8 in compileIRTrace<std::tuple<llvm::Module*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::map<llvm::GlobalValue*, void*, std::less<llvm::GlobalValue*>, std::allocator<std::pair<llvm::GlobalValue* const, void*> > >, void*, unsigned long> (*)(llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long)> (Func=0x7ffff7bf9b00 <createModule[abi:cxx11](llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long)>, FuncNames=0x7fffe8089d00, BBs=0x7fffe808a590, TraceLen=273, FAddrKeys=0x7fffe8165580, FAddrVals=0x7fffe8165690, FAddrLen=20, BitcodeData=0x257ae0 <llvm.embedded[module]+8>, BitcodeLen=3622916, DebugInfoFD=-1, DebugInfoPath=0x0) at src/ykllvmwrap.cc:432
#19 0x00007ffff7bef4de in __yktracec_irtrace_compile (FuncNames=0x7fffe8089d00, BBs=0x7fffe808a590, TraceLen=273, FAddrKeys=0x7fffe8165580, FAddrVals=0x7fffe8165690, FAddrLen=20, BitcodeData=0x257ae0 <llvm.embedded[module]+8>, BitcodeLen=3622916, DebugInfoFD=-1, DebugInfoPath=0x0) at src/ykllvmwrap.cc:450
#20 0x00007ffff7a7a0f8 in ykrt::compile::jitc_llvm::{impl#0}::compile (self=0x91d720, mt=..., irtrace=...) at ykrt/src/compile/jitc_llvm.rs:38
#21 0x00007ffff7a7ccad in ykrt::mt::{impl#0}::queue_compile_job::{closure#0} () at ykrt/src/mt.rs:397
#22 0x00007ffff7a63bce in core::ops::function::FnOnce::call_once<ykrt::mt::{impl#0}::queue_compile_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/ops/function.rs:250
#23 0x00007ffff7a63928 in alloc::boxed::{impl#47}::call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (self=..., args=()) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/alloc/src/boxed.rs:2007
#24 0x00007ffff7a830ab in lock_api::mutex::MutexGuard<parking_lot::raw_mutex::RawMutex, alloc::collections::vec_deque::VecDeque<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global>>::unlocked<parking_lot::raw_mutex::RawMutex, alloc::collections::vec_deque::VecDeque<alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, alloc::alloc::Global>, alloc::boxed::Box<(dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global>, ()> (s=0x7fffee59c9e0, f=...) at /home/pd/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lock_api-0.4.10/src/mutex.rs:567
#25 0x00007ffff7a7b4d1 in ykrt::mt::{impl#0}::queue_job::{closure#0} () at ykrt/src/mt.rs:168
#26 0x00007ffff7a7d3b3 in std::sys_common::backtrace::__rust_begin_short_backtrace<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/sys_common/backtrace.rs:154
#27 0x00007ffff7a6a254 in std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/thread/mod.rs:529
#28 0x00007ffff7a6f424 in core::panic::unwind_safe::{impl#23}::call_once<(), std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>> (self=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/panic/unwind_safe.rs:271
#29 0x00007ffff7a6ea77 in std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>, ()> (data=0x7fffee59cb00) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panicking.rs:526
#30 0x00007ffff7a6ecdb in __rust_try () from /home/pd/yk-fork/bin/../target/debug/deps/libykcapi.so
#31 0x00007ffff7a6e97e in std::panicking::try<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panicking.rs:490
#32 0x00007ffff7a6a096 in std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>>, ()> (f=...) at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/panic.rs:142
#33 std::thread::{impl#0}::spawn_unchecked_::{closure#1}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/std/src/thread/mod.rs:528
#34 0x00007ffff7a63caf in core::ops::function::FnOnce::call_once<std::thread::{impl#0}::spawn_unchecked_::{closure_env#1}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>, ()> () at /rustc/8142a319ed5c1d1f96e5a1881a6546e463b77c8f/library/core/src/ops/function.rs:250
#35 0x00007ffff7c801e5 in alloc::boxed::{impl#47}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:2007
#36 alloc::boxed::{impl#47}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:2007
#37 std::sys::unix::thread::{impl#2}::new::thread_start () at library/std/src/sys/unix/thread.rs:108
#38 0x00007ffff78a8044 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:442
#39 0x00007ffff79285fc in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

@ptersilie
Copy link
Contributor

ptersilie commented Oct 31, 2023

Stacktraces of lua sorting:

a = {}
for i=1,50000 do
  a[i] = math.random()
end

table.sort(a, function(x,y) return y<x end)

I think I got to the bottom of this. They key is that this only happens when serialised compilation is turned off. What happens is that we try to compile a (longish) trace just before the end of the program. While one thread is busy compiling the trace, the lua program suddenly terminates. Presumably the cleanup happening when lua exits, destroys stuff the compiler depends on.

You can verify this by adding prints to certain parts of yk and lua. Or alternatively, using this modified program, which runs just fine:

function sleep(n)
  os.execute("sleep " .. tonumber(n))
end

a = {}
for i=1,50000 do
  a[i] = math.random()
end
 
table.sort(a, function(x,y) return y<x end)

sleep(2)

@ltratt
Copy link
Contributor

ltratt commented Jan 24, 2024

This seems related to the general "the current JIT has bugs" things that will (one way or another) be bypassed, so closing.

@ltratt ltratt closed this as completed Jan 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants