问题标签 [loaderlock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
164 浏览

.net - Delphi - Excel 突然出现 OS Loader Lock 问题

我正在为 Excel 开发一个 Delphi 插件。它还使用 AddIn Express COM 库(优秀的 BTW)。代码一直运行良好。我添加了另一个功能区菜单选项,它调用了一个新表单。此表单具有 REST 控件(客户端、响应等)。虽然这些组件相互关联,但它们没有关于 URL 的信息。这是在运行时设置的。我编译我的项目。

  • 如果我独立运行它(在调试器之外),它运行良好。它设置 URL 资源、调用 REST 服务并在备忘录中显示数据。
  • 如果我从 Delphi 中运行它,我会立即转储到汇编代码中,并在事件日志中收到错误消息

    “尝试在 OS Loader Lock 内进行托管执行。不要尝试在 DllMain 或图像启动函数中运行托管代码,因为这样做会导致应用程序挂起。”

这曾经运行良好,但我刚刚添加了一个表单(具体来说,我添加了一个父表单,带有 REST 组件、一个 RestAdapter、TDatasource 和 ClientDataSet,并从它继承)。在谷歌搜索中,这似乎是一个调试器问题,并且(至少在 Visual Studio 中),这可以通过 Exceptions / Ignore Loader Lock 关闭。我在 Delphi (Seattle) 调试器中找不到任何类似的功能。

我运行 AddIn express 没有问题,我的插件过去运行没有问题,我运行独立的 REST 演示应用程序没有问题。组合是否可能导致此问题?知道如何禁用调试器检查加载程序锁吗?如果有帮助,事件日志中“OS Loader Lock”消息之前的最后一条消息显示模块:CSCAPI.dll 已加载。我想知道是否需要动态创建 REST 组件。我的怀疑是这些组件是在应用程序(也就是我的插件的 Excel)启动时创建的,并且正在以一种使调试器不安的方式初始化某些东西......

0 投票
1 回答
92 浏览

c++ - 在 VC++ 中从 DLLMAIN 内部调用 D3D 的 CREATEDEVICE 时,它会创建死锁(loaderlock?)。有没有办法克服这个问题?内线终结球

不久前,我发表了一篇关于创建 dll 的帖子,目的是为了注入,这将导致主机应用程序触发 Nvidia Optimus 笔记本电脑以“唤醒”dGpu。这是必要的,因为此处创建的可悲系统 nvidia 导致许多应用程序无法识别电源 dGpu 的存在,而是使用集成的英特尔 gpu。(特别是一些视频处理应用程序使用英特尔的时间比使用英伟达的时间长)。那个帖子在这里

可以说,我搬到南极工作并放弃了这个项目。几年后我才把它捡回来,并决定学习(足够的)C++ 来在这里编程。我已经创建了 DLL,如果我将 DX 代码放在一个函数中,然后从主机“调用者”程序中调用该函数。它可以工作!!!但是,如果我将该代码放在 DLLMAIN 中,然后简单地从我的“调用者”程序中加载该 dll(而不实际调用特定函数)......该过程将执行!!!但是,当它到达运行 CREATEDEVICE 的代码部分时,它会崩溃。从那以后,我了解到这是由于一个称为死锁或加载器锁的问题造成的。我不确定是哪个问题。我理解这个概念,但没有任何地方接近 C++ 的理解来开发解决方法。

所以基本上..我可以使用一些解决方法在 DLLMAIN 中运行我的程序吗?也许以某种方式产生一个独立的线程(所以 DLLMAIN 可以完成执行到它的返回?)感谢您提供任何信息。我将在此处包含 vcproject 源代码.. 但这是我在网上找到的科学怪人.. 所以不要追求优雅——我对 C++ 编程几乎一无所知!http://s000.tinyupload.com/index.php?file_id=07876333208461296171

0 投票
0 回答
165 浏览

c++ - 为什么我会收到“LoaderLock”检测?

我正在使用我的 P/Invoked LoadLibrary API 从我的 c# 代码调用 c++ DLL(不是我的代码)。但是当我运行应用程序时,正在检测到 LoaderLock 错误。

起初我将此归咎于我的 DllImport C# 包装器,但是当我尝试加载其他 C++ DLL 时,它工作正常。

我在网上阅读了一些关于 LoaderLock 的文章,似乎 #1 规则是不要在 DllMain 内做任何有趣的事情。当我检查 c++ DllMain 调用 DLL_PROCESS_ATTACH 和 DLL_PROCESS_DETACH 中的一些 API 时。

当我检查 StartAPI() 时,它有一大块代码并调用一个使用CreateProccessA创建进程的函数

这是我为什么会出现 LoaderLock 错误的真正原因吗?

有人告诉我 StartAPI() 应该在 DLL 初始化时运行,还有其他方法可以使这项工作吗?

我计划在另一个线程中调用 StartAPI(),但我读过在 DllMain 中创建线程也是灾难的根源。

谢谢!

0 投票
0 回答
75 浏览

windows-10 - 托管调试助手“LoaderLock”在 .exe 中检测到问题。如何在 vb.net 中删除它?

托管调试助手“LoaderLock”在“..bin\Debug\Paperchase.Apps.ChapterLevelZone.vshost.exe”中检测到问题。

附加信息:DLL '..bin\Debug\PegasusImaging.WinForms.ImagXpress7.dll' 正在尝试在 OS Loader 锁内进行托管执行。不要尝试在 DllMain 或图像初始化函数中运行托管代码,因为这样做会导致应用程序挂起。

如果我尝试从异常设置中取消选中加载程序锁定,当 dll 被命中时应用程序停止工作如何避免它?

0 投票
0 回答
45 浏览

.net - 如何使用 App.exe.config 文件取消 LoaderLock MDA

我英语说的不好。对不起。向世界各地许多有能力的编码人员提出的问题。

  • .Net 框架 4.7.2
  • 视觉工作室 2019
  • 使用 Microsoft.directX API

我正在尝试设置 app.exe.config 文件,以便在其他人启动程序时不会出现 Loaderlock MDA 错误。

在 application.exe.config 文件中

如何实现表达式语法来释放(loaderlock cancel)

请帮助新的编码初学者谢谢

2021 08 30 在 simon Mourier 的建议下解决

谢谢你

我有一个朋友和我问了同样的问题。 https://www.pcreview.co.uk/threads/disable-mda-for-loaderlock.2851033/