Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье показано, как устранить проблему, когда 64-разрядное управляемое приложение не работает из-за нарушения доступа во время маршалинга в общем языке исполнения среды CLR.
Исходная версия продукта: платформа .NET Framework 3.5 с пакетом обновления 1 (SP1)
Исходный номер базы знаний: 2615130
Симптомы
У вас есть управляемое приложение .NET, работающее в качестве 64-разрядного процесса в 64-разрядном пакете обновления Microsoft Windows XP (SP) 3 или 64-разрядном windows Server 2003 с пакетом обновления 2 (SP2). Приложение может завершить работу с нарушением доступа во время передачи данных CLR. Трассировки стека и сбойная функция выглядят следующим образом:
0:000> knL
# Child-SP RetAddr Место вызова
00 000000000042c900 0000064274ee8998 System_ni!DomainNeutralILStubClass.IL_STUB(System.Guid ByRef, IntPtr, Int32, IntPtr, Int32, IntPtr ByRef)+0xff
01 000000000042ca40 0000064274ee8c30 System_ni! System.Runtime.InteropServices.StandardOleMarshalObject.GetStdMarshaller(System.Guid ByRef, Int32, Int32)+0xe8
02 00000000042caf0 000006427f602322
System_ni! System.Runtime.InteropServices.StandardOleMarshalObject.Microsoft.Win32.UnsafeNativeMethods.IMarshal.MarshalInterface(System.Object, System.Guid ByRef, IntPtr, Int32, IntPtr, Int32)+0x6... [Фрагмент]
Причина
Это известная ошибка в 64-разрядном маршаллинге CLR, где он пытается записать в область памяти только для чтения, что вызывает нарушение доступа.
Решение
Чтобы устранить эту проблему, обратитесь в службу поддержки клиентов Майкрософт, чтобы получить исправление. Полный список телефонных номеров службы поддержки клиентов Майкрософт и информацию о расходах на поддержку можно найти на сайте службы поддержки Майкрософт.