1

Я не уверен, стоит ли размещать этот вопрос здесь или лучше на StackOverflow.com, но сначала попробуем здесь.

Конфигурация - это 64-битный сервер Windows 2008 R2 с веб-сайтом ASP.NET 2.0. Проект уже развернут в виде отладочной сборки и построен для "Любого процессора". Он использует внешние методы (см. Ниже), а также запускает сторонние процессы для выполнения определенных задач.

Часто происходит сбой серверов без какой-либо управляемой трассировки стека. Рабочий процесс IIS7 просто умирает. Я не могу связать это с одним определенным действием, которое вызвало бы это. Настройка счетчиков производительности не показала ничего странного. Серверы 64-битные Win 2008 R2. Я думаю, что сбои вызваны одним из внешних методов, используемых в коде. Может кто-нибудь понять смысл вывода отладчика и методов, перечисленных здесь? Есть ли способ узнать, является ли один из методов ниже ответственным за сбой? У меня нет опыта осмотра аварийных свалок, поэтому я надеюсь получить помощь или вдохновение здесь.

Отладчик показывает в разделе "Поля" что-то похожее на набор параметров, помещаемых в стек. Мне интересно, относятся ли они к одному из методов ниже?

Любые другие идеи, как поступить и что попробовать?

Я подозреваю, что сбои вызваны одним из этих вызовов:

[DllImport( "urlmon.dll", CharSet = CharSet.Unicode, ExactSpelling = true, SetLastError = false )]
static extern int FindMimeFromData( IntPtr pBC,
[MarshalAs( UnmanagedType.LPWStr )] string pwzUrl,
                     [MarshalAs( UnmanagedType.LPArray, ArraySubType = UnmanagedType.I1, SizeParamIndex = 3 )]
                     byte[] pBuffer,
                     int cbSize,
                     [MarshalAs( UnmanagedType.LPWStr )]  string pwzMimeProposed,
                     int dwMimeFlags,
                     out IntPtr ppwzMimeOut,
                     int dwReserved );
 
 
[DllImport( "advapi32.dll", SetLastError = true )]
              private static extern int LogonUser( string lpszUserName,
                     string lpszDomain,
                     string lpszPassword,
                     int dwLogonType,
                     int dwLogonProvider,
                     ref IntPtr phToken );
 
              [DllImport( "advapi32.dll", CharSet = CharSet.Auto, SetLastError = true )]
              private static extern int DuplicateToken( IntPtr hToken,
                     int impersonationLevel,
                     ref IntPtr hNewToken );
 
              [DllImport( "advapi32.dll", CharSet = CharSet.Auto, SetLastError = true )]
              private static extern bool RevertToSelf();
 
              [DllImport( "kernel32.dll", CharSet = CharSet.Auto )]
              private static extern bool CloseHandle( IntPtr handle );
 
[DllImport("kernel32.dll")]
        private static extern bool SetProcessWorkingSetSize (IntPtr oProc, int iMin, int iMax);
 
[DllImport( "query.dll", SetLastError = true, CharSet = CharSet.Unicode )]
        static extern int LoadIFilter( string pwcsPath, [MarshalAs( UnmanagedType.IUnknown )] object pUnkOuter, ref IFilter ppIUnk );
 
        [DllImport( "query.dll", SetLastError = true, CharSet = CharSet.Unicode )]
        static extern int BindIFilterFromStream( Stream pStm, [MarshalAs( UnmanagedType.IUnknown )] object pUnkOuter, ref IFilter ppIUnk );
       
        [ComImport, Guid( "89BCB740-6119-101A-BCB7-00DD010655AF" )]
        [InterfaceType( ComInterfaceType.InterfaceIsIUnknown )]
        private interface IFilter
        {
 
 
[DllImport(@"CMCOnBehalf_dll.dll", SetLastError = true,
                     CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
              public static extern int DoEnrollForMe(
                     string sUserId,
                     string sPFXPwd,
            string strSysPwd,
                     string sCAConfigName,
            string wszCATemplateName,
            string sCertSubjectName,
                     string sCertFileName,
            string strAltEmail,
            string strAltPrincipal
                     );
 
        // Late-binding...
        [DllImport(@"CMCOnBehalf_dll.dll", SetLastError = true,
                 CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int DoRenewForMe(
            string sUserId,
            string sPFXPwd,
            string strSysPwd,
            string sCAConfigName,
            string wszCATemplateName,
            string sInputSerial,
            string strInputSubject,
            string sCertFileName,
            string strAltEmail,
            string strAltPrincipal,
            ref string wszOutputSerial
            );
 
        // Late-binding...
              [DllImport(@"CMCOnBehalf_dll.dll", SetLastError = true,
                     CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
        public static extern int DoRevokeForMe(
                     string sSerialID,
                     string sCAConfigName
                     );
 
        // Late-binding...
              [DllImport(@"CMCOnBehalf_dll.dll",  SetLastError=true,
                     CharSet = CharSet.Auto, CallingConvention=CallingConvention.StdCall
                     )]
              public static extern int SetLogLevelForBlogger(
                     string   logFile,
                     int           cbLogLevel
                     );

Это информация, которую я получаю из WinDbg и аварийных дампов:

MANAGED_OBJECT: !dumpobj 1a1583c80
Name: System.String
MethodTable: 000007fef9127ca0
EEClass: 000007fef8d2e550
Size: 2296(0x8f8) bytes
GC Generation: 0
(C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll)
String:    at System.Web.Hosting.UnsafeIISMethods.MgdIsLastNotification(IntPtr pRequestContext, RequestNotificationStatus dwStatus)
   at System.Web.HttpRuntime.FinishRequestNotification(IIS7WorkerRequest wr, HttpContext context, RequestNotificationStatus& status)
   at System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
  at System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr pHandler, RequestNotificationStatus& notificationStatus)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
   at System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)
 
Fields:
              MT            Field           Offset                 Type VT             Attr            Value Name
000007fef912ef10  4000096        8         System.Int32  1 instance             1136 m_arrayLength
000007fef912ef10  4000097        c         System.Int32  1 instance             1135 m_stringLength
000007fef91296e8  4000098       10          System.Char  1 instance               20 m_firstChar
000007fef9127ca0  4000099       20        System.String  0   shared           static Empty
                                 >> Domain:Value  00000000002d1980:00000001bf690370 0000000001ab43f0:00000001bf690370 <<
000007fef9129598  400009a       28        System.Char[]  0   shared           static WhitespaceChars
                                 >> Domain:Value  00000000002d1980:00000001bf690b60 0000000001ab43f0:00000001df690390 <<
 
EXCEPTION_MESSAGE:  Attempted to read or write protected memory. This is often an indication that other memory is corru
 
MANAGED_OBJECT_NAME:  SYSTEM.ACCESSVIOLATIONEXCEPTION
 
MANAGED_STACK_COMMAND:  ** Check field   _remoteStackTraceString **;!do 1002be1e8;!do 1a1583c80
 
LAST_CONTROL_TRANSFER:  from 000007fef9d99413 to 000007fefd4fcacd
 
PRIMARY_PROBLEM_CLASS:  WRONG_SYMBOLS
 
BUGCHECK_STR:  APPLICATION_FAULT_WRONG_SYMBOLS_CLR_EXCEPTION
 
STACK_TEXT: 
00000000`00000000 00000000`00000000 unknown!System.Web.Hosting.UnsafeIISMethods.MgdIsLastNotification+0x0
00000000`00000000 00000000`00000000 unknown!System.Web.HttpRuntime.FinishRequestNotification+0x0
00000000`00000000 00000000`00000000 unknown!System.Web.HttpRuntime.ProcessRequestNotificationPrivate+0x0
00000000`00000000 00000000`00000000 unknown!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper+0x0
00000000`00000000 00000000`00000000 unknown!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification+0x0
00000000`00000000 00000000`00000000 unknown!System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion+0x0
00000000`00000000 00000000`00000000 unknown!System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper+0x0
00000000`00000000 00000000`00000000 unknown!System.Web.Hosting.PipelineRuntime.ProcessRequestNotification+0x0
 
 
 
 
0:048> !aspxpages
Going to dump the HttpContexts found in the heap.
Loading the heap objects into our cache.
HttpContext    Timeout  Completed     Running  ThreadId ReturnCode   Verb RequestPath+QueryString
0x0000000100233f88    11647 Sec        no        14 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x0000000100292250    36000 Sec        no         7 Sec     XXX        200   GET /systools/lbchecker.aspx
0x0000000160286d10    36000 Sec        no        14 Sec     XXX        200   GET /fs/getcustomerfile.aspx sconfigvalue=1%3a%3a2%3a%3a-1%3a%3a-1%3a%3av8.20-login-image.png&iheight=320&iwidth=-1&h=0e9784b59a8712a7518401629a908709b32f724f8b7c831ba045743a81a5fef0
0x0000000160293a30    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x00000001602ae740    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x00000001602c9450    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x00000001602e4160    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x00000001602fee70    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x0000000160319b80    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x0000000160334890    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x000000016034f5a0    11647 Sec        no        13 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x000000016036a378    11647 Sec        no        13 Sec      50        200   POST /testwebservice/v3/services.svc/IHome
0x000000018f6e4818    36000 Sec        no     68676 Sec     XXX        200   GET /systools/lbchecker.aspx
0x00000001903a2fc8    36000 Sec        no        14 Sec     XXX        200   GET /default.aspx cookieCheck=true
0x00000001904496c8    36000 Sec        no        14 Sec     XXX        200   POST /testadminservice/testadminservice.asmx
0x00000001b040efd8    36000 Sec        no        26 Sec     XXX        200   GET /newdr/drcontent.aspx intID=5538807
0x00000001b0435b60    36000 Sec        no         5 Sec     XXX        200   GET /systools/lbchecker.aspx
0x00000001c0383688    36000 Sec        no        25 Sec     XXX        200   GET /newdr/drcontent.aspx intID=5538807
0x00000001c0732f50    36000 Sec        no         9 Sec     XXX        200   POST /testadminservice/testadminservice.asmx/SystemTest
0x00000001d0661a60    11647 Sec        no        14 Sec     XXX        200   POST /testwebservice/v3/services.svc/IHome
0x00000001e051dd68    36000 Sec        no         8 Sec     XXX        200   GET /systools/lbchecker.aspx
0x00000001f0e03ff0    36000 Sec        no         5 Sec     XXX        200   GET /systools/lbchecker.aspx
Total 22 HttpContext objects

0