gpt4 book ai didi

vb6 - VB6程序崩溃:第2部分。关于修复访问冲突的建议(0xC00000005)

转载 作者:行者123 更新时间:2023-12-03 17:44:03 25 4
gpt4 key购买 nike

this question相关。有关解决以下问题的任何建议?

经过对该程序的大量试验,我发现了几件事。

  • 运行代码行Set Message = New CAPICOM.EncryptedData时,它相对一致地崩溃(大约90%的时间)。请注意,此行上方仅是Dim Message As CAPICOM.EncryptedData
  • 在程序执行的早期调用该函数时,该调用不会崩溃。二进制搜索错误无法找到问题,因为在某些地方神秘地调用了该函数,因此无法可靠地防止该错误的发生。如果错误出现,有时重建程序似乎会产生影响。是的,这是一个heisenbug。时态二进制搜索错误也存在相同的问题。花5个小时比较程序的两个版本,结果发现这两个版本都有错误,即使其中只有一个当前显示出的症状不是很有效。
  • 崩溃是由于访问冲突0xC00000005
  • 运行WinDbg(Windows调试器)显示,只有一行代码读取此内存位置LoadPicture(szTmpBMP)。它在一个可怕的函数的末尾被调用,该函数从资源中获取图片并将其粘贴到临时文件中。我对此功能感到非常害怕,为了进行测试,我将其替换为对LoadPicture("testcra.bmp")的调用,然后没有对该位图调用可怕的资源功能。这没有帮助。完全删除对loadpicture的调用也无济于事,尽管调试器无法再找到正在读取受影响的内存的任何点,并且受影响的内存不再位于同一位置。该测试是在VM上完成的,因此调试器不一定会看到某些内存读取。
  • 一切都可以在Vista上完美运行(我的本地计算机和Vista VM)。访问冲突仅在XP上发生。
  • 我正在使用VB6版本8176,6.0.8169
  • 最佳答案

    我当前有效的解决方案是尽早创建我的所有capicom对象,并且永远不要在第一个之前创建capicom.encrypteddata新实例。这行得通,但是根本不可能真正解决潜在的问题。

    关于vb6 - VB6程序崩溃:第2部分。关于修复访问冲突的建议(0xC00000005),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/337835/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com