У нас есть 64-битное приложение, работающее как служба на Windows 7 64bit. Когда мы запускаем сервис вручную, он отлично работает каждый раз. Когда служба запускается автоматически при запуске системы, иногда (например, 1 из 10) она терпит неудачу. Проблема заключается в функции LoadLibrary, которая на самом деле является первой, что она делает. Это большая часть нашей DLL, где большая часть кода. Я не могу воспроизвести его на своих компьютерах, поэтому я просто отправляю специальные тестовые файлы для коллег за границу. Я добавил текстовые выходы в файл, используя небуферизованную операцию записи, чтобы я мог видеть, где именно она исчезает. Нет дампа сбоя, исключений нет, нет NULL, извлеченного, он просто выходит где-то в LoadLibrary, и служба не запускается после запуска системы. В нашей библиотеке нет DllMain, но если я добавлю ее, она не будет там (в случае сбоя). Я пробовал задерживать загрузку зависимых системных библиотек, без успеха. Кажется, что иногда что-то еще не запускается в Windows, и поэтому инициализация терпит неудачу, я не уверен. Но добавление сна до того, как LoadLibrary не решит проблему (слишком поздно спать?). У вас есть идеи, что происходит и как действовать? В настоящее время я собираюсь удалить код из нашей DLL шаг за шагом, чтобы удалить зависимостей lib один за другим, чтобы убедиться, что в какой-то момент он начнет работать. Я буду рад предоставить дополнительную информацию по мере необходимости.LoadLibrary иногда не работает при запуске службы
0
A
ответ
0
Приложение Lenovo RapidBoot Shield было причиной.
«RapidBoot Shield работает, задерживая некритические приложения и службы, чтобы ускорить загрузку вашей системы. Однако в некоторых случаях RapidBoot Shield может задерживать приложение и/или службу, критическую для запуска системы. система загружается медленнее, чем ожидалось, или некоторые приложения могут не запускаться нормально ».
Смежные вопросы
- 1. Связь не работает при запуске службы
- 2. Logstash не работает при запуске службы
- 3. LoadLibrary не работает
- 4. Ошибка LoadLibrary при запуске Loadrunner 12.53
- 5. При запуске деятельности GCM иногда работает, а иногда и нет.
- 6. C++ LoadLibrary Не работает
- 7. LoadLibrary не работает при компиляции в AnyCpu
- 8. Приложение иногда разбивается при запуске
- 9. Трансляция при запуске службы?
- 10. Ошибка при запуске службы
- 11. NullPointerException при запуске службы
- 12. Ошибка при запуске службы
- 13. «Работа с Launcher не найдена!» при запуске службы при запуске
- 14. Прокси не работает при запуске WSO2 в качестве службы Windows
- 15. CruiseControl.Net с сбоем git не работает при запуске службы
- 16. Asynctask внутри фрагментов не работает при запуске службы
- 17. Приложение третьей стороны не работает при запуске службы
- 18. ошибка 5 при запуске службы
- 19. службы Systemd неудачи при запуске
- 20. Проверка службы WCF при запуске
- 21. Активность зависает при запуске службы
- 22. Запуск службы при запуске контейнера
- 23. Отображение ProgressDialog при запуске службы
- 24. Ошибка при запуске службы. OracleMTSRecoveryService не найден
- 25. службы не вызывались при запуске телефона - Android
- 26. takePicture не удалось при запуске службы камеры
- 27. иногда отсутствует PTRACE_EVENT_VFORK при запуске ptrace
- 28. Ошибка при запуске службы Windows
- 29. Проблемы при запуске моей службы
- 30. Исключение обработки при запуске службы
Это нормально для службы, чтобы иметь зависимость от других сервисов, которые должны функционировать до того, как она начнется. Явная конфигурация для Windows, Панель управления + Административные службы, щелкните правой кнопкой мыши вашу службу, вкладка «Свойства», «Зависимости». Выяснить, какое обслуживание вам нужно, нельзя угадать из вопроса. Но можно, конечно, обнаружить проб и ошибок. Посмотрите через зависимости других сервисов, которые выполняют аналогичную работу. –
Да, возможно, нам нужна некоторая зависимость, которая еще не началась в 1 из 10 случаев, потому что порядок услуг меняется. Но тогда я бы предположил, что, например, 15 секундный сон (хотя и не очень хорошее решение, конечно) поможет. Но это не так. Очень сложно сказать, какая зависимость службы требуется, если мы еще не вызываем какую-либо функцию, просто загрузите нашу библиотеку DLL. Я также могу изменить поведение, чтобы загрузить его статически, возможно, он расскажет нам больше из журнала службы или чего-то еще. – Martin
Здесь вы можете увидеть наши дополнительные библиотечные зависимости нашей проблемной DLL, возможно, вы узнаете, какой сервис нам нужно дождаться, чтобы загрузить их должным образом: kernel32.lib; user32.lib; gdi32.lib; winspool.lib; shell32.lib ; ole32.lib; oleaut32.lib; uuid.lib; comdlg32.lib; advapi32.lib; secur32.lib; ws2_32.lib; libeay32.lib; icuin.lib; icuuc.lib; zlibstatic.lib – Martin