Что такое ошибка «Невозможно установить распределение», кто ее генерирует и что с этим делать? - PullRequest
3 голосов
/ 28 апреля 2010

В течение нескольких лет мы страдали от периодических сообщений от клиентов о неописанном сообщении об ошибке «Невозможно установить распределение», которое появляется при запуске нашего приложения. До сих пор нам никогда не удавалось воспроизвести проблему в наших собственных тестовых средах. Теперь у меня закончились идеи, чтобы попытаться отследить это. Вот коллекция наблюдений, которые накопились с течением времени:

  • Текст сообщения об ошибке гласит «Невозможно установить выделения» (обратите внимание на отсутствие пунктуации).
  • Заголовок окна просто читается как «Ошибка» (или локализованный эквивалент).
  • Текст «Невозможно установить выделения» всегда на английском языке независимо от локали ОС.
  • До сих пор я не смог найти DLL или EXE-файл, содержащий текст сообщения.

  • Google переполнен сообщениями об этой ошибке для множества различных продуктов - но без решений.

  • Единственный объединяющий аспект между затронутыми продуктами, которые я мог разглядеть до сих пор, заключался в том, что все они выглядят в виде библиотек DLL, которые загружаются в сторонние процессы (такие как надстройки для Visual Studio или оболочки Windows Explorer расширения).

  • Наше приложение на самом деле является условно-бесплатным надстройкой COM для MS Outlook, написанным на Delphi (т.е. нативный код - нет .NET).

  • Главным подозреваемым в нашем случае является сторонний лицензионный упаковщик, который мы используем, который расшифровывает и распаковывает нашу DLL в память на лету. Очевидно, что я не мог просто предоставить незащищенную версию нашего приложения пострадавшим клиентам, чтобы проверить это подозрение. Возможно, другие поставщики, против которых сообщалось об этом, используют аналогичные продукты.

  • Отладочные версии оболочки защиты, предоставленные нам поставщиком лицензий, не дали результатов: файлы журналов выглядели точно так же, как в сеансах, в которых ошибка не возникала. Очевидно, что «внутренняя» DLL все-таки дешифруется и распаковывается, но по какой-то причине все еще не может быть загружена хост-процессом.

  • Создавая незащищенную DLL-библиотеку-загрузчик, мы смогли точно определить возникновение ошибки где-то за LoadLibrary вызовом, который должен загружать нашу DLL в память.

  • Обширная регистрация и глобальные перехваты исключений в нашем собственном коде (как незащищенный загрузчик, так и защищенный "core" -DLL) вообще не дали никаких результатов. Ошибка явно возникает где-то еще.

  • Проблема, описанная в этом моем предыдущем вопросе , была, вероятно, вызвана той же проблемой. Это было до того, как мы создали незащищенную заглушку загрузчика.

  • Ошибка возникает только у 1-2% наших клиентов - тогда как обычно все установки на любом из затронутых сайтов клиента затрагиваются одинаково.

  • Иногда ошибка исчезает после выпуска новой версии, но часто она возвращается снова через пару недель или месяцев.
  • Как только ошибка начинает возникать на машине, это происходит последовательно.
  • Ошибка никогда не возникает при подключении к уязвимому компьютеру через удаленный доступ (например, VNC, RDP, TeamViewer и т. Д.), И ни один из затронутых клиентов не находится в пределах досягаемости от нас, поэтому все, что нам нужно пройти, это файлы журналов и «отчеты свидетелей».

  • Один клиент сообщил, что диалоговое окно сообщения об ошибке, по-видимому, было немодальным, то есть он мог просто переместить диалоговое окно в сторону и продолжить работу с приложением (за исключением функциональности, которую обеспечивала бы наша DLL) , Не уверен, что это универсально верно и во всех других случаях.

  • В некоторых случаях клиенты могли навсегда избавиться от ошибки, отключив или удалив другие надстройки от других поставщиков, которые делили хост-приложение с нашим собственным продуктом.

  • Ошибка до сих пор наблюдалась в Windows XP, Vista и 7.

  • В течение последних нескольких недель мы получили множество отчетов от пользователей Outlook 2003 / Windows 7. Может ли ситуация ухудшиться в результате недавнего обновления Windows / Office?

Кто-нибудь вообще сталкивался с этой ошибкой?

Или есть еще идеи по расследованию этого?

Ответы [ 7 ]

2 голосов
/ 29 ноября 2012

У меня только недавно было это, что вызвало мой поиск, и я оказался здесь. Я могу сказать вам, что со мной наверняка это в Windows 7 Home Premium, НО ТОЛЬКО С IE9 (который я ненавижу, кстати), он переводит пользователя обратно в фиктивную стадию и предполагает, что мы должны быть отмечены обо всем. будет продолжать спрашивать вас, хотите ли вы отключить надстройки, чтобы ускорить время загрузки, но обычно на вещи, которые в действительности не замедляют работу браузера, во-первых, это слишком большая загрузка мусора. Возвращаясь к разделу «Невозможно установить распределение», я, например, никогда не использовал его в любом другом браузере, что не означает, что этого не происходит с ними.

1 голос
/ 28 апреля 2010

Это будет чисто догадка, но похоже, что ваше стороннее лицензионное программное обеспечение пытается загрузить вашу DLL в определенном месте в памяти, которое - на этих отказавших системах - оказывается уже занято что-то еще, возможно, глобальная подключаемая DLL.

1 голос
/ 28 апреля 2010

Если у вас есть клиент, который желает немного поработать с вами, он может пролить некоторый свет на ситуацию, чтобы получить аварийный дамп (например, с ADPlus или, может быть, проще с Sysinternals 'ProcDump ), когда отображается сообщение об ошибке. Это показало бы, какие модули загружены и, возможно, стека вызовов (если это происходит из окна сообщения во время ошибки, а не из того, которое перехватывает исключение после проблемы).

0 голосов
/ 26 октября 2015

Также не программист, но это всегда происходит, когда я открываю Chrome. Открывается второе окно с сообщением об ошибке «невозможно установить распределение». Я обычно закрываю это и иду своим путем. если я не делаю это обычно вызывает сбой. не происходит ни в одном другом браузере.

0 голосов
/ 01 июня 2015

При открытии Google Chrome отображается сообщение «Невозможно установить распределение».Кроме того, после этого Chrome закрывается с сообщением «Whoa Chrome упал ...»

Все еще нет решения: (

0 голосов
/ 06 июня 2014

Я видел, как это произошло. В моем случае глобальная подключаемая библиотека DLL создала отображение большого файла памяти, возможно, на память, на которую рассчитывала лицензионная библиотека DLL.

0 голосов
/ 23 марта 2013

У меня также возникла проблема «Невозможно установить распределение». Королевская боль. Я отключил Java, так как он мне, кажется, не нужен, я использовал программы добавления / удаления для удаления Java из моей системы. Тогда я заявил, чтобы получить эти ошибки. Я переустановил, но отключил Java в IE Explorer. Теперь я не получаю ошибку больше. Не программист, не знаю, почему это произошло. Может быть, ключ к кому-то. Win 7 - 64-битная ОС IE Explorer 10. Надеюсь, это поможет кому-то разобраться. Джон

...