Блог P1ratRuleZZZ

Избавляемся от Application error kernelbase.dll и лечим .NET Framework

Короче, неделя задалась не лучшая: каким-то образом у меня начали сыпаться ошибки “Application error kernelbase.dll” (имя приложения не несет важности)

Имя сбойного приложения: Connect.Service.ContentService.exe, версия: 3.0.84.0, отметка времени: 0x4f344200
Имя сбойного модуля: KERNELBASE.dll, версия: 6.1.7601.18798, отметка времени 0x5507b485
Код исключения: 0xe0434352
Смещение ошибки: 0x0000c42d
Идентификатор сбойного процесса: 0x8e8
Время запуска сбойного приложения: 0x01d079586563378c
Путь сбойного приложения: C:\Program Files (x86)\Autodesk\Content Service\Connect.Service.ContentService.exe
Путь сбойного модуля: C:\Windows\syswow64\KERNELBASE.dll
Код отчета: a327902f-e54b-11e4-b131-240a649fc3bc

Чего я только не пробовал! Советовали переустановить полностью .NET – сначала снести, а потом установить, но у меня не сработало. В общем, я опишу этот способ, поскольку он является достаточно простым в отличие от того, который применил я.

Способ 1

  1. Добавляем эту страницу в закладки и перезагружаемся в безопасный режим с поддержкой сетевых драйверов (Еще способ).
  2. Открываем снова страницу моего крутого блога и качаем .NET Framework Cleanup Tool c моего сервера или с MSDN (на случай, если ссыкло)
  3. Запускаем утилиту и тыкаем на Cleanup Now
  4. Идем на кухню и делаем чай или можно отлично засесть в туалете с телефоном в руках и читать дурацкие паблики в вк и т.д.
  5. Возвращаемся – если еще не удалилось – идем обратно в толчком и дочитываем паблики. Повторяем, пока не удалится.
  6. Удалилось? ОК. Перезагружаемся в обычный режим.
  7. Теперь скачиваем .NET Framework v4.0 и устанавливаем, скрестив пальцы, потому что этот гей очень любит выпендриваться
  8. Проверяем – все ли ок с приложениями, которые не работали и есть ли в логах ошибки. Если все в целом ОК, можно будет обновиться до .NET Framework 4.5, но не в коем случае не ставить сразу 4.5! Сначала надо поставить версию 4.

Способ 2: Если способ 1 не помог

  1. Можно проделать первый способ и оставить .NET в установленном состоянии. Далее нужно на сломанной машине установить все обновления, касающиеся .NET (можно просто установить все обязательные обновления)
  2. Предупреждаю – способ только для джедаев, потому что сила дже-дай – это сила вселенной. В общем, муторный способ.
  3. Если у вас есть второй комп или ноутбук, на котором тоже установлена такая же система Windows с такой же архитектурой (32 или 64 бит), то третий пунки можно пропустить. А если у вас установлена Windows 7 x64, то можно попробовать скачать мой подготовленный пакет и перейти к шагу 7
  4. Скачиваем VirtualBox или VMWare Player и устанавливаем на машину такой же Windows, который стоит на сломанной тачке.
  5. Ставим обновления для новый Windows так, чтобы они совпадали с обновлениями на локальной тачке, хотя в целом можно просто на новой винде поставить ВСЕ обновления (разве что кроме рекомендуемых).
  6. После установки обновлений перезагружаем виртуальную машину, идем в папку C:\Windows\Microsoft.NET и архивируем ее в RAR или ZIP или просто копируем папку себе на локальную машину, например в Мои документы\recover, чтобы получилось Мои документы\recover\Microsoft.NET.
  7. Распаковываем или копируем БЕЗ ЗАМЕНЫ все файлы из папки recover\Microsoft.NET в папку C:\Windows\Microsoft.NET и перезагружаем комп.
  8. Все должно теперь работать, ну а если уж не работает – придется переставлять систему, я понятия не имею, что еще можно сделать в этом случае.

Опишу свою конкретную проблему: у меня вылетал часто Skype (может, еще и не перестал вылетать – кто его знает!) и не открывался GEForce Experience – выдавал мне ошибку “Обнаружена ошибка. Приложение будет закрыто” и вот такую вот ересь я нашел в логах

Не удается загрузить один или более запрошенных типов. Обратитесь к свойству LoaderExceptions для получения дополнительных сведений.
System.Reflection.ReflectionTypeLoadException
 в System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
 в System.Reflection.RuntimeModule.GetTypes()
 в System.Reflection.Assembly.GetTypes()
 в System.ComponentModel.Composition.Hosting.AssemblyCatalog.get_InnerCatalog()
 в System.ComponentModel.Composition.Hosting.AssemblyCatalog.GetEnumerator()
 в System.Linq.Enumerable.<SelectManyIterator>d__14`2.MoveNext()
 в Microsoft.Practices.Prism.MefExtensions.DefaultPrismServiceRegistrar.GetRequiredPrismPartsToRegister(AggregateCatalog aggregateCatalog)
 в Microsoft.Practices.Prism.MefExtensions.DefaultPrismServiceRegistrar.RegisterRequiredPrismServicesIfMissing(AggregateCatalog aggregateCatalog)
 в Microsoft.Practices.Prism.MefExtensions.MefBootstrapper.RegisterDefaultTypesIfMissing()
 в Microsoft.Practices.Prism.MefExtensions.MefBootstrapper.Run(Boolean runWithDefaultConfiguration)
 в Flame.Core.FlameBootstrapper`3.Run(Boolean runWithDefaultConfiguration)
 в Flame.Core.FlameApplicationGovernor`4.RunOnce()
 в Flame.Core.FlameApplicationGovernor`4.Application_Startup(Object sender, StartupEventArgs e)
 в System.Windows.Application.OnStartup(StartupEventArgs e)
 в GFEClient.App.OnStartup(StartupEventArgs e)
 в System.Windows.Application.<.ctor>b__1(Object unused)
 в System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
 в MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)

Мне помог именно второй способ. Первый не давал особо ничего за два дня мучений, в итоге решилось за 10 секунд.

P.S: Отдельное спасибо Nvidia за то, что добавили в свое приложение ЛОГИ, которые помогли мне отследить ошибку. Если вы разработчик, то помните – ЛОГИ – это хорошо! Чем больше логов – тем больше логов.

Exit mobile version