Skip to content

ffi/many_listener_callbacks_test.dart timesout/deadlocks on vm-reload-rollback-linux-debug-x64 #61372

@aam

Description

@aam

log from build

--- Command "vm" (took 02:00.000233s):
DART_CONFIGURATION=DebugX64 out/DebugX64/dart --hot-reload-rollback-test-mode --use-slow-path --stacktrace-every=100 -Dtest_runner.configuration=vm-reload-rollback-linux-debug-x64 --ignore-unrecognized-flags --packages=/b/s/w/ir/.dart_tool/package_config.json /b/s/w/ir/tests/ffi/many_listener_callbacks_test.dart

exit code:
1

diagnostics:
Process list including children: [23788]
Trying to capture stack trace for pid 23788
PID 23788 - process
TID 23788:
#0  0x00007be61ac91117 __GI___futex_abstimed_wait_cancelable64
#1  0x00007be61ac93a41 pthread_cond_wait@@GLIBC_2.3.2
#2  0x00005b5469dab747 dart::ConditionVariable::WaitMicros(dart::Mutex*, long)
#3  0x00005b546a7e53fd Dart_RunLoop
#4  0x00005b5469da5742 dart::bin::RunMainIsolate(char const*, char const*, char const*, dart::bin::CommandLineOptions*)
#5  0x00005b5469da64c3 dart::bin::main(int, char**)
#6  0x00005b5469da547d main
#7  0x00007be61ac29d90 __libc_start_call_main
#8  0x00007be61ac29e40 __libc_start_main@@GLIBC_2.34
#9  0x00005b5469da21a9 _start
TID 23790:
#0  0x00007be61ad25e2e epoll_wait
#1  0x00005b5469db0985 dart::bin::EventHandlerImplementation::Poll(unsigned long)
#2  0x00005b546a7d50c7 dart::bin::ThreadStart(void*)
#3  0x00007be61ac94ac3 start_thread
#4  0x00007be61ad26850 __clone3
TID 23798:
#0  0x00007be61ac91117 __GI___futex_abstimed_wait_cancelable64
#1  0x00007be61ac93e9b pthread_cond_timedwait@@GLIBC_2.3.2
#2  0x00005b5469dab80f dart::ConditionVariable::WaitMicros(dart::Mutex*, long)
#3  0x00005b546a30a73d dart::MutatorThreadPool::OnEnterIdleLocked(dart::MutexLocker*, dart::ThreadPool::Worker*)
#4  0x00005b546a5170c8 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*)
#5  0x00005b546a51782d dart::ThreadPool::Worker::Main(unsigned long)
#6  0x00005b546a4829b6 dart::ThreadStart(void*)
#7  0x00007be61ac94ac3 start_thread
#8  0x00007be61ad26850 __clone3
TID 23808:
#0  0x00007be61ac91117 __GI___futex_abstimed_wait_cancelable64
#1  0x00007be61ac93e9b pthread_cond_timedwait@@GLIBC_2.3.2
#2  0x00005b5469dab80f dart::ConditionVariable::WaitMicros(dart::Mutex*, long)
#3  0x00005b546a30a73d dart::MutatorThreadPool::OnEnterIdleLocked(dart::MutexLocker*, dart::ThreadPool::Worker*)
#4  0x00005b546a5170c8 dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*)
#5  0x00005b546a51782d dart::ThreadPool::Worker::Main(unsigned long)
#6  0x00005b546a4829b6 dart::ThreadStart(void*)
#7  0x00007be61ac94ac3 start_thread
#8  0x00007be61ad26850 __clone3
TID 23911:
#0  0x00007be61ac912c0 __GI___lll_lock_wait
#1  0x00007be61ac98002 __pthread_mutex_lock@GLIBC_2.2.5
#2  0x00005b5469dab2cf dart::Mutex::Lock()
#3  0x00005b546a34d279 dart::SafepointMutexLocker::SafepointMutexLocker(dart::ThreadState*, dart::Mutex*)
#4  0x00005b546a2ff6da dart::FfiCallbackMetadata::CreateMetadataEntry(dart::Isolate*, dart::IsolateGroup*, dart::FfiCallbackMetadata::TrampolineType, unsigned long, unsigned long, dart::FfiCallbackMetadata::MetadataEntry**)
#5  0x00005b546a300548 dart::FfiCallbackMetadata::CreateAsyncFfiCallback(dart::Isolate*, dart::Zone*, dart::Function const&, long, dart::FfiCallbackMetadata::MetadataEntry**)
#6  0x00005b546a21f844 dart::BootstrapNatives::DN_Ffi_createNativeCallableListener(dart::Thread*, dart::Zone*, dart::NativeArguments*)
#7  0x00005b546a36a713 dart::NativeEntry::BootstrapNativeCallWrapper(_Dart_NativeArguments*, void (*)(_Dart_NativeArguments*))
#8  0x00007be61a302434
#9  0x00007be6196a8fe7
#10 0x00007be6196a859d
#11 0x00007be6196a534a
#12 0x00007be6196b143e
#13 0x00007be6196b12dd
#14 0x00007be6196b0f86
#15 0x00007be6196b0c4a
#16 0x00007be6196afd3e
#17 0x00007be6196ae940
#18 0x00007be6196ae71c
#19 0x00007be6196ae242
#20 0x00007be6196ade34
#21 0x00007be6196add38
#22 0x00007be6196abc8a
#23 0x00007be6196a2275
#24 0x00007be61a3027c4
#25 0x00005b546a2d5e3e dart::DartEntry::InvokeFunction(dart::Function const&, dart::Array const&, dart::Array const&)
#26 0x00005b546a2d852f dart::DartLibraryCalls::HandleMessage(long, dart::Instance const&)
#27 0x00005b546a31284b dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >)
#28 0x00005b546a350969 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool)
#29 0x00005b546a351492 dart::MessageHandler::TaskCallback()
#30 0x00005b546a516f3f dart::ThreadPool::WorkerLoop(dart::ThreadPool::Worker*)
#31 0x00005b546a51782d dart::ThreadPool::Worker::Main(unsigned long)
#32 0x00005b546a4829b6 dart::ThreadStart(void*)
#33 0x00007be61ac94ac3 start_thread
#34 0x00007be61ad26850 __clone3
TID 23920:
#0  0x00007be61ac912c0 __GI___lll_lock_wait
#1  0x00007be61ac98002 __pthread_mutex_lock@GLIBC_2.2.5
#2  0x00005b5469dab2cf dart::Mutex::Lock()
#3  0x00005b546a4c78a8 DLRT_GetFfiCallbackMetadata
#4  0x00007be61af6158b
#5  0x0000000000000000
#6  0x00007be61ac94ac3 start_thread
#7  0x00007be61ad26850 __clone3
TID 23930:
#0  0x00007be61ac91117 __GI___futex_abstimed_wait_cancelable64
#1  0x00007be61ac93a41 pthread_cond_wait@@GLIBC_2.3.2
#2  0x00005b5469dab747 dart::ConditionVariable::WaitMicros(dart::Mutex*, long)
#3  0x00005b546a567640 dart::SafepointHandler::ExitSafepointLocked(dart::Thread*, dart::MonitorLocker*, dart::SafepointLevel)
#4  0x00005b546a5683e5 dart::SafepointHandler::BlockForSafepoint(dart::Thread*)
#5  0x00005b546a310446 dart::IsolateMessageHandler::HandleLibMessage(dart::Array const&)
#6  0x00005b546a312822 dart::IsolateMessageHandler::HandleMessage(std::__2::unique_ptr<dart::Message, std::__2::default_delete<dart::Message> >)
#7  0x00005b546a350969 dart::MessageHandler::HandleMessages(dart::MonitorLocker*, bool, bool)
#8  0x00005b546a350f02 dart::MessageHandler::HandleOOBMessages()
#9  0x00005b546a51024b dart::Thread::HandleInterrupts(unsigned long)
#10 0x00005b546a4c0e75 DRT_InterruptOrStackOverflow
#11 0x00007be61a3022d2
#12 0x00007be6196a9244
#13 0x00007be61a302720
#14 0x0000000000000000
#15 0x00007be61af61658
#16 0x00007be61ac94ac3 start_thread
#17 0x00007be61ad26850 __clone3
TID 23931:
#0  0x00007be61ac912c0 __GI___lll_lock_wait
#1  0x00007be61ac98002 __pthread_mutex_lock@GLIBC_2.2.5
#2  0x00005b5469dab2cf dart::Mutex::Lock()
#3  0x00005b546a4c78a8 DLRT_GetFfiCallbackMetadata
#4  0x00007be61af6158b
#5  0x0000000000000000
#6  0x00007be61ac94ac3 start_thread
#7  0x00007be61ad26850 __clone3
TID 23932:
#0  0x00007be61ac91117 __GI___futex_abstimed_wait_cancelable64
#1  0x00007be61ac93a41 pthread_cond_wait@@GLIBC_2.3.2
#2  0x00005b5469dab747 dart::ConditionVariable::WaitMicros(dart::Mutex*, long)
#3  0x00005b546a50e59d dart::Thread::AddActiveThread(dart::IsolateGroup*, dart::Isolate*, dart::Thread::TaskKind, bool)
#4  0x00005b546a50e38c dart::Thread::EnterIsolate(dart::Isolate*)
#5  0x00005b546a30e5f4 dart::Isolate::InitIsolate(char const*, dart::IsolateGroup*, Dart_IsolateFlags const&, bool)
#6  0x00005b546a30e3d6 dart::IsolateGroup::EnterTemporaryIsolate()
#7  0x00005b546a4c7966 DLRT_GetFfiCallbackMetadata
#8  0x00007be61af6158b
#9  0x0000000000000002
#10 0x00007be61ac94ac3 start_thread
#11 0x00007be61ad26850 __clone3
TID 23933:
#0  0x00007be61ac912c0 __GI___lll_lock_wait
#1  0x00007be61ac98002 __pthread_mutex_lock@GLIBC_2.2.5
#2  0x00005b5469dab2cf dart::Mutex::Lock()
#3  0x00005b546a4c78a8 DLRT_GetFfiCallbackMetadata
#4  0x00007be61af6158b
#5  0x0000000000000000
#6  0x00007be61ac94ac3 start_thread
#7  0x00007be61ad26850 __clone3
TID 23934:
#0  0x00007be61ac912c0 __GI___lll_lock_wait
#1  0x00007be61ac98002 __pthread_mutex_lock@GLIBC_2.2.5
#2  0x00005b5469dab2cf dart::Mutex::Lock()
#3  0x00005b546a4c78a8 DLRT_GetFfiCallbackMetadata
#4  0x00007be61af6158b
#5  0x0000000000000000
#6  0x00007be61ac94ac3 start_thread
#7  0x00007be61ad26850 __clone3
TID 23935:
#0  0x00007be61ac912c0 __GI___lll_lock_wait
#1  0x00007be61ac98002 __pthread_mutex_lock@GLIBC_2.2.5
#2  0x00005b5469dab2cf dart::Mutex::Lock()
#3  0x00005b546a4c78a8 DLRT_GetFfiCallbackMetadata
#4  0x00007be61af6158b
#5  0x0000000000000000
#6  0x00007be61ac94ac3 start_thread
#7  0x00007be61ad26850 __clone3
TID 23936:
#0  0x00007be61ac91117 __GI___futex_abstimed_wait_cancelable64
#1  0x00007be61ac93e9b pthread_cond_timedwait@@GLIBC_2.3.2
#2  0x00005b5469dab80f dart::ConditionVariable::WaitMicros(dart::Mutex*, long)
#3  0x00005b546a5671e2 dart::SafepointHandler::LevelHandler::WaitUntilThreadsReachedSafepointLevel()
#4  0x00005b546a5660bc dart::SafepointHandler::SafepointThreads(dart::Thread*, dart::SafepointLevel)
#5  0x00005b546a314f79 dart::IsolateGroup::ReloadSources(dart::JSONStream*, bool, char const*, char const*, bool)
#6  0x00005b546a4c0ce4 DRT_InterruptOrStackOverflow
#7  0x00007be61a3022d2
#8  0x00007be6196a9244
#9  0x00007be61a302720
#10 0x0000000000000000
#11 0x00007be61af61658
#12 0x00007be61ac94ac3 start_thread
#13 0x00007be61ad26850 __clone3
TID 23942:
#0  0x00007be61ac912c0 __GI___lll_lock_wait
#1  0x00007be61ac98002 __pthread_mutex_lock@GLIBC_2.2.5
#2  0x00005b5469dab2cf dart::Mutex::Lock()
#3  0x00005b546a4c78a8 DLRT_GetFfiCallbackMetadata
#4  0x00007be61af6158b
#5  0x0000000000000000
#6  0x00007be61ac94ac3 start_thread
#7  0x00007be61ad26850 __clone3



--- Re-run this test:
python3 tools/test.py -n vm-reload-rollback-linux-debug-x64 ffi/many_listener_callbacks_test/2

perhaps related to 919d503 which made FfiCallbackMetadata::CreateMetadataEntry use SafepointMutexLocker - that is locked by TID 23911, while other threads TID 23920, 23931,... uses MutexLock for the same mutex. All while another thread TID 23936 is waiting for everybody to get to a safepoint to perform a reload.

cc @liamappelbe

Metadata

Metadata

Assignees

Labels

P2A bug or feature request we're likely to work onarea-vmUse area-vm for VM related issues, including code coverage, and the AOT and JIT backends.gardeningtriagedIssue has been triaged by sub team

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions