LoadLibrary在作为服务启动时有时会失败
LoadLibrary fails sometimes when starting as service
我们有一个64位应用程序作为服务在Windows 7 64位上运行。当我们手动启动一项服务时,它每次都能正常工作。当服务在系统启动时自动启动时,有时(如十分之一)会失败。问题出在LoadLibrary函数上,这实际上是它做的第一件事。这是我们DLL的一个负载,大部分代码都在那里。我无法在我的计算机上复制它,所以我只是把特殊的测试二进制文件发送给国外的同事。我使用无缓冲写入操作将文本输出添加到文件中,这样我就可以准确地看到它消失的位置。并没有崩溃转储,并没有异常,并没有NULL重试,它只是在LoadLibrary中的某个位置退出,并且在系统启动后服务并没有运行。我们的库没有DllMain,但如果我添加它,它不会到达那里(在失败的情况下)。我尝试延迟加载依赖的系统库,但没有成功。有时Windows中似乎还没有启动某些东西,因此初始化失败,我不确定。但是在LoadLibrary之前添加睡眠并不能解决问题(睡得太晚?)。你知道发生了什么以及如何进行吗?我现在要一步一步地从我们的DLL中删除代码,一个接一个地删除lib依赖项,看看它是否会在某个时刻开始工作。我很乐意在需要时提供更多信息。
联想RapidBoot Shield应用程序是原因。
RapidBoot Shield通过延迟非关键应用程序和服务来帮助您的系统更快地启动。但是,在某些情况下,RapidBoot盾牌可能会延迟对系统启动至关重要的应用程序和/或服务。这可能导致系统启动速度慢于预期,或者某些应用程序可能无法正常启动
相关文章:
- 从 exe 文件 (Visual Studio ) 启动时调试断言失败
- 常时等量启动失败.错误: 0x2 ;当开始从 2 个相机 PTGrey 读取时
- 如果应用程序从安装选项启动,则加载库失败,错误代码为 126
- 添加新对话框后,MFC 应用程序启动失败并"DLL Initialization Failed"
- curl apis 在 DNS 启动和关闭时不会更改值,但 curl 命令提供成功/失败输出
- LoadLibrary在作为服务启动时有时会失败
- 黑莓模拟器上的级联相机错误:取景器启动失败
- 内核AIO(libaio)写入请求在启动时从保留的内存中写入时失败
- 启动失败,没有二进制文件
- Tizen 应用程序启动失败
- 无法运行程序“g++”:启动失败 - Eclipse C++
- C++启动失败.找不到二进制文件
- System() 来启动一个进程,但使用 CreateProcess 失败
- 启动失败.找不到二进制文件.为什么
- c ++:TCP服务器"bind"功能失败(errno 98),如果我在两次连续应用程序启动之间没有等待足够的时间
- 当IIS 7启动glfwInit时失败
- QtCreator:启动程序失败.路径或权限错误
- CUDA 运行时错误:未指定的启动失败 & 超出范围的共享或本地地址
- Cuda错误:意外启动失败
- Qt创建器启动调试器失败