K
K
Karnah2020-03-25 17:15:02
C++ / C#
Karnah, 2020-03-25 17:15:02

Why are all threads from the ThreadPool hanging?

Good day everyone.
I have a WPF application that makes frequent use of the thread pool. At one of the launches of the application, the thread pool ended and it hung. The dump shows that 931 threads have a stack trace:

[email protected]()
KERNELBASE.dll!WaitForSingleObjectEx()
[email protected]@12()
ntdll.dll!__RtlUserThreadStart()
[email protected]()


The stacktrace of other threads (including the main one) ends with [email protected](), [email protected](), [email protected]()and [email protected](). Judging by the logs, the streams were not clogged immediately, but gradually - it took more than 20 minutes. The bug is single, but I would really like to figure it out. What could it be and how can I get more information about the problem?
Thanks in advance!

Answer the question

In order to leave comments, you need to log in

1 answer(s)
#
#, 2020-03-25
@mindtester

Karnah ,

the project is large, threads are used frequently, the bug is single, there is no stack trace in managed code. Looking for a bug in code is like looking for a needle in a haystack. Therefore, I would like to know if there are tools that will allow you to learn more about the problem.
as if it were more delicate..
remember, mourn (s)
but since you ask a question in the C# tag - there is one move:
- add debug logging
- wherever you start the thread (you can also generate a unique id there, even a guid)
- wherever the thread successfully completes (this is where the id would be valuable)
- type muzzle / write a memorandum / tell everything you think, to the coder, for releasing such raw material into production
.. what did you want?
upd based on comments (updated)
@Karnah,
Хотелось бы комментарий по стектрейсу - он вообще не затрагивает код проекта. В какой ситуации это возможно?
повторюсь - что у вас происходит, остается только телепатировать
В дампе видно
у вас BSOD что ли?
1 - а чем смотрите? не все инструменты покажут полный стек. в этой части, возможно и есть выбор инструментов. только это не про C#
2 - дамп то полный? может минидамп?
3 - стек управляемого кода, искать в дампе, еще сложнее, чем дебажить ваш проект. просто по тому, что его там может не быть вообще. что бы он был - ваше приложение должно успеть поймать исключение. но если у вас BSOD - это значит операционка крешится раньше управляемого кода.. понимаете?
4 - именно по этому, если у вас есть есть сорцы или автор - только основная часть ответа и дебаг
5 - WPF в принципе не генерит потоки сам. пока кодер не начнет. по этому снова - без сорцов, без объяснения что у вас там вообще твориться? ваш вопрос подобен поискам дерева и мужика из старого, популярного кино
Karnah,
То есть ожидался ответы вида: "стектрейс выглядит странно,
ни чего странного для
таймеры .. и бесконечные циклы..
абсолютно ожидаемые стеки на уровне неуправляемого кода. который система. просто у системы просят потоки, пока она не захлебнется

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question