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

abort() has been called #2

Open
lzh1104 opened this issue Sep 22, 2022 · 3 comments
Open

abort() has been called #2

lzh1104 opened this issue Sep 22, 2022 · 3 comments

Comments

@lzh1104
Copy link

lzh1104 commented Sep 22, 2022

png

abort() has been called

@z-pc
Copy link
Owner

z-pc commented Sep 23, 2022

Hi,
Can you show more information about your case?
Your step-by-step action, the build system, architecture, output in cmd, or any more information.
Thanks.

@lzh1104
Copy link
Author

lzh1104 commented Sep 23, 2022

system: windows 7 + vs2019 + vc142 + Windows SDK version 10

Cmd

>main thread push#t1
>#t1 loop 3
>create worker 0
>main thread push#t2
>#t2 loop 9
>create worker 1
>worker 0 is waiting for start signal
>worker 0 is waiting for new task
>worker 0 is getting a task
>#t1 running 0
>worker 1 is waiting for start signal
>s-worker 1 is waiting for new task
>main thread sleep for2s
>s-worker 1 is getting a task
>#t2 running 0
>#t1 running 1
>#t2 running 1
>#t1 running 2
>terminate
>main thread push#t3
>#t3 loop 6
>#t2 running 2
>#t2 running 3
>worker 3722304989 is waiting for new task
>worker 3722304989 is exited
>#t2 running 4
>#t2 running 5
>#t2 running 6
>#t2 running 7
>#t2 running 8
>s-worker 3722304989 is waiting for new task
>s-worker 3722304989 is exited

Stack

>	ucrtbased.dll!issue_debug_notification(const wchar_t * const message) 行 28	C++
 	ucrtbased.dll!__acrt_report_runtime_error(const wchar_t * message) 行 154	C++
 	ucrtbased.dll!abort() 行 61	C++
 	ucrtbased.dll!terminate() 行 59	C++
 	thread_pool.exe!std::thread::~thread() 行 97	C++
 	thread_pool.exe!std::thread::`scalar deleting destructor'(unsigned int)	C++
 	thread_pool.exe!std::default_delete<std::thread>::operator()(std::thread * _Ptr) 行 3090	C++
 	thread_pool.exe!std::unique_ptr<std::thread,std::default_delete<std::thread>>::~unique_ptr<std::thread,std::default_delete<std::thread>>() 行 3200	C++
 	thread_pool.exe!std::unique_ptr<std::thread,std::default_delete<std::thread>>::`scalar deleting destructor'(unsigned int)	C++
 	thread_pool.exe!std::_Default_allocator_traits<std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>>>::destroy<std::unique_ptr<std::thread,std::default_delete<std::thread>>>(std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>> & __formal, std::unique_ptr<std::thread,std::default_delete<std::thread>> * const _Ptr) 行 692	C++
 	thread_pool.exe!std::_Destroy_range<std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>>>(std::unique_ptr<std::thread,std::default_delete<std::thread>> * _First, std::unique_ptr<std::thread,std::default_delete<std::thread>> * const _Last, std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>> & _Al) 行 906	C++
 	thread_pool.exe!std::vector<std::unique_ptr<std::thread,std::default_delete<std::thread>>,std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>>>::_Destroy(std::unique_ptr<std::thread,std::default_delete<std::thread>> * _First, std::unique_ptr<std::thread,std::default_delete<std::thread>> * _Last) 行 1668	C++
 	thread_pool.exe!std::vector<std::unique_ptr<std::thread,std::default_delete<std::thread>>,std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>>>::_Tidy() 行 1752	C++
 	thread_pool.exe!std::vector<std::unique_ptr<std::thread,std::default_delete<std::thread>>,std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>>>::~vector<std::unique_ptr<std::thread,std::default_delete<std::thread>>,std::allocator<std::unique_ptr<std::thread,std::default_delete<std::thread>>>>() 行 701	C++
 	thread_pool.exe!threadpool::IThreadPool::~IThreadPool() 行 108	C++
 	thread_pool.exe!threadpool::ThreadPool::~ThreadPool() 行 141	C++
 	[外部代码]	
 	thread_pool.exe!threadpool::ThreadPool::push(std::shared_ptr<threadpool::IRunnable> runnable) 行 186	C++
 	thread_pool.exe!testTerminate() 行 75	C++
 	thread_pool.exe!main() 行 87	C++
 	[外部代码]	

guess
app will exit but some thread running

@z-pc
Copy link
Owner

z-pc commented Sep 23, 2022

This case is so strange.
In my example, the threadpool::wait() is called, so the app will not exit until all threads exited.
Did you missout call threadpool::wait() ?

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

2 participants