.Net 4 在 StrongNameSignatureVerification 上不断浪费一个 CPU 核心

2023-12-24

我们有一个在 .Net 4、Windows 2008 R2 上运行的混合模式汇编应用程序 (MFC+WinForms),它在一个线程上不断使用 100% 的 cpu。

使用 ProcessExplorer,我们在繁忙的线程上看到以下堆栈。我们还可以看到另外 10 个线程仅使用 0.01% CPU 运行 clr.dll!StrongNameSignatureVerification。

旋转线程不会阻止应用程序其余部分的运行,但会浪费 CPU 时间。

繁忙线程的堆栈跟踪如下:

ntoskrnl.exe!IoAcquireRemoveLockEx+0xe7
ntoskrnl.exe!memset+0x22a
ntoskrnl.exe!KeWaitForSingleObject+0x2cb
ntoskrnl.exe!KeDetachProcess+0x120d
ntoskrnl.exe!PsReturnProcessNonPagedPoolQuota+0x3a3
ntoskrnl.exe!CcSetDirtyPinnedData+0x433
mscorlib.ni.dll+0x2b066a
mscorlib.ni.dll+0x2317ac
mscorlib.ni.dll+0x2b066a
mscorlib.ni.dll+0x2317ac
mscorlib.ni.dll+0x26ccf7
mscorlib.ni.dll+0x237fc4
mscorlib.ni.dll+0x26cc3c
clr.dll+0x21bb
clr.dll!CoUninitializeEE+0xee9b
clr.dll!CoUninitializeEE+0x11463
clr.dll!CoUninitializeEE+0x114dc
clr.dll!CoUninitializeEE+0x1154b
clr.dll!StrongNameErrorInfo+0xa638
clr.dll!StrongNameSignatureVerification+0x144fb
clr.dll!StrongNameSignatureVerification+0x1457d
clr.dll!StrongNameSignatureVerification+0x14638
clr.dll!StrongNameSignatureVerification+0x146d2
clr.dll!StrongNameErrorInfo+0x9977
clr.dll!StrongNameErrorInfo+0xa5bc
clr.dll!StrongNameErrorInfo+0xa553
clr.dll!StrongNameErrorInfo+0xa517
clr.dll!StrongNameErrorInfo+0xa151
clr.dll!StrongNameErrorInfo+0x9501
clr.dll!StrongNameErrorInfo+0xad67
clr.dll!StrongNameSignatureVerification+0x164d9
ntdll.dll!RtlCreateUserProcess+0x8c
ntdll.dll!RtlCreateProcessParameters+0x4e

我能找到的唯一类似的帐户是在这个问题中:clr.sll!StrongNameSignatureVerification CPU 消耗 https://stackoverflow.com/questions/7303315/clr-sllstrongnamesignatureverification-cpu-consumption尽管线程似乎已经变冷了。

我们不签署我们的程序集并愿意信任它们,有没有办法完全禁用强名称验证?


clr.dll!StrongNameSignatureVerification+0x164d9

这并不像你想象的那样。标识符右侧的数字很重要,它给出了 StrongNameSignatureVerification 函数地址已知位置之后的字节数。那是 91353 字节,很多。你唯一能从中看出的是它是not执行 StrongNameSignatureVerification 时,该函数并没有那么长。堆栈跟踪中的其余标识符同样不可靠。

问题是调试器没有这些 DLL 的 PDB 文件。它只能发现导出函数的地址,而对之间的所有函数了解不够。仅当偏移量小于约 0x100 字节时,您才可以信任显示的名称。给予或索取。

您需要获取这些 PDB 文件才能了解到底发生了什么。这需要启用 Microsoft 符号服务器。当您开始调试时,调试器将从该服务器下载所需的 PDB 文件。现在,您将获得更可靠的符号,让您更好地了解真正执行的代码。

启用符号服务器很容易,MSDN 页面is here http://msdn.microsoft.com/en-us/library/b8ttk8zy%28v=vs.100%29.aspx.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.Net 4 在 StrongNameSignatureVerification 上不断浪费一个 CPU 核心 的相关文章

随机推荐

  • AngularJS 中使用 $validators 管道进行密码匹配会产生意外结果

    参见示例here http jsfiddle net vBK9A 使用 validators 管道 我尝试检查一个字段是否包含与另一个字段相同的值 此示例中的每个输入都与另一个相关联 因此预期结果如下 在 input 1 中输入一个值 在
  • 私有 GKE 与 Cloud SQL 之间的连接

    我有一个带有公共主端点的私有 GKE 集群 其中包含需要访问 Cloud SQL 的作业 我有一个在 3307 上接收的云 SQL 代理 DaemonSet 它连接到 3306 上的实际数据库 我的网络没有出站互联网 也没有添加任何防火墙规
  • Django 迭代 ClearableFileInput 小部件字段

    目前有一个模型具有model FileField 属性 当在我的 django 模板中渲染时 我只是迭代字段 例如 for field in form visible fields div class form group field er
  • 将数组转换为 NSAttributedString

    我有一个NSMutableArray由 组成的NSAttributedString s 我正在尝试将其转换为单个NSAttributedString分离所有的NSAttributedString有一个角色 这种方法类似于数组到数组的转换NS
  • 将 32 位无符号“实数”数据类型(分为两个 16 位有符号字)转换为 javascript

    我有一个 32 位无符号 实 值 分为两个 16 位有符号 字 0 65535 值 如何将它们转换为 JavaScript 数字 例子 值1 18584 值2 18081 实际值为 20644 3 我正在寻找像 back2Real 1858
  • 我们可以将 saiku 与 Pentaho 分析器进行比较吗?

    我目前正在实习 我必须创建一个完整的 BI 应用程序 我想我会使用 pentaho 而且我必须只使用开源组件 我知道 Pentaho 分析器不是免费的 我的问题是 saiku 相当于分析器吗 如果是 我可以将它与 pentaho 一起使用而
  • 有没有一种方法可以在不使用Subject的情况下创建由方法调用触发的可观察序列?

    我有一个带有几个方法的服务 在我的代码中的各个不同位置调用 class Service method1 method2 我希望能够订阅这些方法调用 即有一个可观察对象 每当调用这些方法之一时它就会发出一个值 我意识到我可以用Rx Subje
  • 共享内存中的data.table以进行并行计算

    继有关的帖子之后数据表和并行计算 https stackoverflow com questions 14759905 data table and parallel computing 我正在尝试找到一种方法来进行手术data table
  • 如何在浮动 IP 后面使用 docker swarm 模式管理器

    某些提供商 例如 ScaleWay 将为您的服务器提供一个未连接到本地接口的 IP docker swarm init advertise addr
  • 修复 macOS 12 上的 git HTTPS 错误:“错误的密钥长度”

    我使用的是公司托管的 Bitbucket git 存储库 可以通过 HTTPS 访问 访问它 例如git fetch 在 macOS 11 Big Sur 上运行 但在更新到 macOS 12 Monterey 后出现故障 将 macOS
  • Java6 中对象 的通配符

    请问如何纠正投射并删除警告 unchecked unchecked cast required T found java lang Object 来自SSCCE import java awt import javax swing publ
  • Flutter:获取 HTML 页面的某些元素

    我最近开始使用 dart 和 flutter 为动物收容所开发一个应用程序 但遇到了问题 这个想法是有一个捐赠页面 用户可以选择为狗购买食物 打开的脚手架将显示食物的图片 并从销售所述食物的网站获取一些数据以及当前价格 该图像作为资产存储在
  • 如何在 vim 中自动格式化/缩进 C 代码?

    当我从另一个文件复制代码时 格式会变得混乱 如下所示 fun for for if 如何在 vim 中自动格式化此代码 尝试以下按键 gg G 解释 gg转到文件顶部 是一个修复缩进的命令G告诉它执行操作到文件末尾
  • C 中的线程

    我想在C中创建一个线程 以便该线程在两秒后自动调用 我使用Visual Studio和Windows平台进行开发 我该如何开始 您将需要使用操作系统特定的库来执行线程 在 Posix 上 你会想要研究一下pthreads https com
  • 向 Android 应用程序添加屏幕亮度控制

    我希望在应用程序菜单中添加控件来本地调整屏幕亮度 但似乎不知道如何操作 我已经看到了最大化或调暗亮度的示例 但我希望添加控件 以便用户可以控制和设置亮度级别 有谁有任何示例 教程 源代码 或者只是一个可以为我指明正确方向的地方 互联网 ht
  • 通过电话进行 Google 地图/地点 API 搜索

    我们有一个注册页面 用户可以在其中输入他的公司电话号码 我们想从电话号码中找到他的商业信息以进行验证 如何使用 Google 地点 地图 api 来完成此操作 还有更好的选择吗 我有点迷失了 通过谷歌 API 仔细检查后 他们的回复也没有返
  • 带换行符的长字符串

    我见过 C 代码使用 告诉编译器字符串中有换行符并且它应该全部在一行中 C C 有类似的东西吗 就像如果我想放这样的东西 73167176531330624919225119674426574742355349194934 96983520
  • Numpy 中一维数组的滚动窗口?

    有没有办法在 Numpy 中有效地实现一维数组的滚动窗口 例如 我有这个纯 Python 代码片段来计算一维列表的滚动标准差 其中observations是一维值列表 并且n是标准差的窗口长度 stdev for i data in enu
  • 如何在mysql中将日期格式的月份减一? [复制]

    这个问题在这里已经有答案了 假设我有一个 select 语句 SELECT COUNT wedding DATE FORMAT weddate y m d FROM weddingtable 我想让它可以从返回的月份中减去 1 例如 SEL
  • .Net 4 在 StrongNameSignatureVerification 上不断浪费一个 CPU 核心

    我们有一个在 Net 4 Windows 2008 R2 上运行的混合模式汇编应用程序 MFC WinForms 它在一个线程上不断使用 100 的 cpu 使用 ProcessExplorer 我们在繁忙的线程上看到以下堆栈 我们还可以看