Skip to content

Failing test - coroutine.lua #58

@Pavel-Durov

Description

@Pavel-Durov

Issue

Failing coroutine.lua test.

Reproduction steps

$ YKD_SERIALISE_COMPILATION=0 try_repeat 1000 ../src/lua coroutine.lua

Notes

Reproduces only with non-serialised compilation.
YKD_SERIALISE_COMPILATION=1 try_repeat 1000 ../src/lua coroutine.lua executed successfully.

Backtrace

[New Thread 0x7ffff17d9640 (LWP 10784)]
[Thread 0x7ffff17d9640 (LWP 10784) exited]
[New Thread 0x7ffff17d9640 (LWP 10785)]
lua: /yk-fork/ykllvm/llvm/lib/IR/Value.cpp:1101: void llvm::ValueHandleBase::RemoveFromUseList(): Assertion `*PrevPtr == this && "List invariant broken"' failed.
--Type <RET> for more, q to quit, c to continue without paging--

Thread 5 "lua" received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffeda44640 (LWP 10773)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
49      ../sysdeps/unix/sysv/linux/raise.c: No such file or directory.
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:49
#1  0x00007ffff78e2864 in __GI_abort () at abort.c:79
#2  0x00007ffff78e2749 in __assert_fail_base (fmt=0x7ffff7a6bf78 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", 
    assertion=0x7ffff600ac38 "*PrevPtr == this && \"List invariant broken\"", 
    file=0x7ffff6009300 "/yk-fork/ykllvm/llvm/lib/IR/Value.cpp", line=1101, function=<optimised out>)
    at assert.c:92
#3  0x00007ffff78f43d6 in __GI___assert_fail (assertion=0x7ffff600ac38 "*PrevPtr == this && \"List invariant broken\"", 
    file=0x7ffff6009300 "/yk-fork/ykllvm/llvm/lib/IR/Value.cpp", line=1101, 
    function=0x7ffff600abb0 "void llvm::ValueHandleBase::RemoveFromUseList()") at assert.c:101
#4  0x00007ffff5e65448 in llvm::ValueHandleBase::RemoveFromUseList() ()
   from /yk-fork/target/debug/ykllvm/lib/libLLVMCore.so.16git
#5  0x00007ffff7cca5b7 in llvm::ValueHandleBase::~ValueHandleBase (this=0x7fffeda425a0)
    at /yk-fork/target/debug/ykllvm/include/llvm/IR/ValueHandle.h:66
#6  0x00007ffff7ccbef9 in llvm::CallbackVH::~CallbackVH (this=0x7fffeda42598)
    at /yk-fork/target/debug/ykllvm/include/llvm/IR/ValueHandle.h:386
#7  0x00007ffff7cc9225 in llvm::ValueMapCallbackVH<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >::~ValueMapCallbackVH (this=0x7fffeda42598)
    at /yk-fork/target/debug/ykllvm/include/llvm/IR/ValueMap.h:46
#8  0x00007ffff7cc75b2 in llvm::ValueMap<llvm::Value const*, llvm::WeakTrackingVH, llvm::ValueMapConfig<llvm::Value const*, llvm::sys::SmartMutex<false> > >::operator[] (this=0x7fffeda42dc8, Key=@0x7fffeda42688: 0x7fffc19217f0)
    at /yk-fork/target/debug/ykllvm/include/llvm/IR/ValueMap.h:207
#9  0x00007ffff7cd07cc in JITModBuilder::copyInstruction (this=0x7fffeda42c18, Builder=0x7fffeda42c48, I=0x7fffc19217f0, 
    CurBBIdx=2, CurInstrIdx=9) at src/jitmodbuilder.cc:1056
#10 0x00007ffff7cc3ef4 in JITModBuilder::createModule (this=0x7fffeda42c18) at src/jitmodbuilder.cc:1676
#11 0x00007ffff7cc2989 in createModule[abi:cxx11](llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long) (AOTMod=0x7fffc0088780, FuncNames=0x7fffe0011860, BBs=0x7fffe0013590, TraceLen=933, FAddrKeys=0x7fffe0006fa0, 
    FAddrVals=0x7fffe00070b0, FAddrLen=29) at src/jitmodbuilder.cc:1751
--Type <RET> for more, q to quit, c to continue without paging--
#12 0x00007ffff7cc08e7 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)>(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), char**, unsigned long*, unsigned long, char**, void**, unsigned long, void*, unsigned long, int, char*)::{lambda(llvm::Module&)#1}::operator()(llvm::Module&) const
    (this=0x7fffeda430c8, AOTMod=...) at src/ykllvmwrap.cc:411
#13 0x00007ffff7cc037e in llvm::orc::ThreadSafeModule::withModuleDo<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)>(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), char**, unsigned long*, unsigned long, char**, void**, unsigned long, void*, unsigned long, int, char*)::{lambda(llvm::Module&)#1}>(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)>(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), char**, unsigned long*, unsigned long, char**, void**, unsigned long, void*, unsigned long, int, char*)::{lambda(llvm::Module&)#1}&&) (this=0x7ffff7e52310 <GlobalAOTMod>, F=...)
    at /yk-fork/target/debug/ykllvm/include/llvm/ExecutionEngine/Orc/ThreadSafeModule.h:136
#14 0x00007ffff7cb8409 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=0x7ffff7cc2910 <createModule[abi:cxx11](llvm::Module*, char**, unsigned long*, unsigned long, char**, void**, unsigned long)>, FuncNames=0x7fffe0011860, BBs=0x7fffe0013590, TraceLen=933, FAddrKeys=0x7fffe0006fa0, FAddrVals=0x7fffe00070b0, 
    FAddrLen=29, BitcodeData=0x257f10 <llvm.embedded.module+8>, BitcodeLen=3612476, DebugInfoFD=-1, DebugInfoPath=0x0)
    at src/ykllvmwrap.cc:408
#15 0x00007ffff7cb82de in __yktracec_irtrace_compile (FuncNames=0x7fffe0011860, BBs=0x7fffe0013590, TraceLen=933, 
    FAddrKeys=0x7fffe0006fa0, FAddrVals=0x7fffe00070b0, FAddrLen=29, BitcodeData=0x257f10 <llvm.embedded.module+8>, 
    BitcodeLen=3612476, DebugInfoFD=-1, DebugInfoPath=0x0) at src/ykllvmwrap.cc:450
#16 0x00007ffff7b20398 in ykrt::trace::IRTrace::compile (self=0x7fffeda43670) at ykrt/src/trace/mod.rs:178
#17 0x00007ffff7b35ae7 in ykrt::mt::{impl#0}::queue_compile_job::{closure#0} () at ykrt/src/mt.rs:389
#18 0x00007ffff7b05afe in core::ops::function::FnOnce::call_once<ykrt::mt::{impl#0}::queue_compile_job::{closure_env#0}, ()> ()
    at /rustc/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/core/src/ops/function.rs:250
#19 0x00007ffff7b36ffd in alloc::boxed::{impl#47}::call_once<(), (dyn core::ops::function::FnOnce<(), Output=()> + core::marker::Send), alloc::alloc::Global> (self=..., args=())
    at /rustc/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/alloc/src/boxed.rs:1985
#20 0x00007ffff7b0e52b 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=0x7fffeda43910, f=...)
    at /home/kimchi/.cargo/registry/src/index.crates.io-6f17d22bba15001f/lock_api-0.4.10/src/mutex.rs:567
#21 0x00007ffff7b341d1 in ykrt::mt::{impl#0}::queue_job::{closure#0} () at ykrt/src/mt.rs:161
#22 0x00007ffff7b4c4e3 in std::sys_common::backtrace::__rust_begin_short_backtrace<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> (f=...) at /rustc/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/std/src/sys_common/backtrace.rs:135
#23 0x00007ffff7b22034 in std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> () at /rustc/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/std/src/thread/mod.rs:529
#24 0x00007ffff7b37ee4 in core::panic::unwind_safe::{impl#23}::call_once<(), std::thread::{impl#0}::spawn_unchecked_::{closure#1}--Type <RET> for more, q to quit, c to continue without paging--
::{closure_env#0}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()>> (self=...)
    at /rustc/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/core/src/panic/unwind_safe.rs:271
#25 0x00007ffff7b322f7 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=0x7fffeda43a60)
    at /rustc/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/std/src/panicking.rs:500
#26 0x00007ffff7b325eb in __rust_try () from /yk-fork/bin/../target/debug/deps/libykcapi.so
#27 0x00007ffff7b3227e 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/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/std/src/panicking.rs:464
#28 0x00007ffff7b21e5e 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/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/std/src/panic.rs:142
#29 std::thread::{impl#0}::spawn_unchecked_::{closure#1}<ykrt::mt::{impl#0}::queue_job::{closure_env#0}, ()> ()
    at /rustc/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/std/src/thread/mod.rs:528
#30 0x00007ffff7b05a7f 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/8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220/library/core/src/ops/function.rs:250
#31 0x00007ffff7d361c5 in alloc::boxed::{impl#47}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:1985
#32 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:1985
#33 std::sys::unix::thread::{impl#2}::new::thread_start () at library/std/src/sys/unix/thread.rs:108
#34 0x00007ffff588f450 in start_thread (arg=0x7fffeda44640) at pthread_create.c:473
#35 0x00007ffff79d3d53 in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Versions

YKLua - main/a03ed08b34ae5cc5a6238f27bb09c47d133a9da8
YK - master/a690e6eaf7253a4fa9c04bb54406c07b7efc0085

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions