Win7 WOW64中应用程序中的奇怪线程
中观察到 4-6 线程,该应用程序具有 3 线程,并且在 Windows 7 之前的任何 Windows(32 或 64 位)上表现正常。
我们在 Windows 7 x64 上的应用程序 资源管理器显示以下“未知”线程:
ntdll.dll!EtwDeliverDataBlock+offset
在随机间隔后出现以下线程:
ntdll.dll!TpCallbackIndependent+offset
ntdll.dll!TpCallbackIndependent+offset
在该应用程序无法创建线程之后(错误代码 8,空间足够热...)。
在我看来,某些系统 DLL 创建了 ETW 线程或其他东西。有谁知道这些线程的用途以及如何管理它们?
We are observing 4-6 threads on Windows 7 x64 in the application which have 3 threads and behaves normally on any Windows (either 32 or 64 bit) prior Windows 7.
Process Explorer shows the following "unknown" thread:
ntdll.dll!EtwDeliverDataBlock+offset
after random interval the following threads appear:
ntdll.dll!TpCallbackIndependent+offset
ntdll.dll!TpCallbackIndependent+offset
after that application can't create thread (error code 8, hot enough space ...).
It seems to me that some system DLL creates ETW threads or something. Does anyone know what these threads for and how to manage them?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
TP 线程是 Windows 线程池 API 的一部分,并且是因为您的应用程序(或应用程序使用的 DLL)使用了 Windows 线程池 API 而创建的。您的应用程序(或您的应用程序使用的 DLL 之一)似乎正在使用 ETW API,该 API 也使用几个线程。你确实没有能力管理这些线程。
我严重怀疑这些线程是导致内存不足错误的原因。问题更有可能是进程中没有足够的连续内存来为新线程的堆栈保留空间。
The TP threads are a part of the Windows threadpool API and are created because your application (or a DLL used by your application) has used the Windows threadpool API. It also appears that your application (or one of the DLLs used by your application) is using the ETW APIs which also use a couple of threads. You really don't have the ability to manage these threads.
I seriously doubt that those threads are what is causing the out of memory error. It is more likely that the problem is that there isn't enough contiguous memory available in your process to reserve the room for the new thread's stack.