Exemplo n.º 1
0
        internal static void AppDomainUnhandledException(object sender, UnhandledExceptionEventArgs args)
        {
            Exception exceptionObject = (Exception)args.ExceptionObject;

            PSEtwLog.LogOperationalError(PSEventId.AppDomainUnhandledException, PSOpcode.Close, PSTask.None, PSKeyword.UseAlwaysOperational, new object[] { exceptionObject.GetType().ToString(), exceptionObject.Message, exceptionObject.StackTrace });
            PSEtwLog.LogAnalyticError(PSEventId.AppDomainUnhandledException_Analytic, PSOpcode.Close, PSTask.None, PSKeyword.ManagedPlugin | PSKeyword.UseAlwaysAnalytic, new object[] { exceptionObject.GetType().ToString(), exceptionObject.Message, exceptionObject.StackTrace });
        }
Exemplo n.º 2
0
 private void ProcessingThreadStart(object state)
 {
     try
     {
         string data = state as string;
         OutOfProcessUtils.ProcessData(data, this.callbacks);
     }
     catch (Exception exception)
     {
         CommandProcessorBase.CheckForSevereException(exception);
         PSEtwLog.LogOperationalError(PSEventId.TransportError, PSOpcode.Open, PSTask.None, PSKeyword.UseAlwaysOperational, new object[] { Guid.Empty.ToString(), Guid.Empty.ToString(), 0xfa0, exception.Message, exception.StackTrace });
         PSEtwLog.LogAnalyticError(PSEventId.TransportError_Analytic, PSOpcode.Open, PSTask.None, PSKeyword.Transport | PSKeyword.UseAlwaysAnalytic, new object[] { Guid.Empty.ToString(), Guid.Empty.ToString(), 0xfa0, exception.Message, exception.StackTrace });
         this.originalStdErr.WriteLine(exception.Message + exception.StackTrace);
         Environment.Exit(0xfa0);
     }
 }
Exemplo n.º 3
0
        protected void ProcessingThreadStart(object state)
        {
            try
            {
#if !CORECLR
                // CurrentUICulture is not available in Thread Class in CSS
                // WinBlue: 621775. Thread culture is not properly set
                // for local background jobs causing experience differences
                // between local console and local background jobs.
                Thread.CurrentThread.CurrentUICulture = Microsoft.PowerShell.NativeCultureResolver.UICulture;
                Thread.CurrentThread.CurrentCulture   = Microsoft.PowerShell.NativeCultureResolver.Culture;
#endif
                string data = state as string;
                OutOfProcessUtils.ProcessData(data, callbacks);
            }
            catch (Exception e)
            {
                PSEtwLog.LogOperationalError(
                    PSEventId.TransportError,
                    PSOpcode.Open,
                    PSTask.None,
                    PSKeyword.UseAlwaysOperational,
                    Guid.Empty.ToString(),
                    Guid.Empty.ToString(),
                    OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION,
                    e.Message,
                    e.StackTrace);

                PSEtwLog.LogAnalyticError(
                    PSEventId.TransportError_Analytic,
                    PSOpcode.Open,
                    PSTask.None,
                    PSKeyword.Transport | PSKeyword.UseAlwaysAnalytic,
                    Guid.Empty.ToString(),
                    Guid.Empty.ToString(),
                    OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION,
                    e.Message,
                    e.StackTrace);

                // notify the remote client of any errors and fail gracefully
                if (_exitProcessOnError)
                {
                    originalStdErr.WriteLine(e.Message + e.StackTrace);
                    Environment.Exit(OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION);
                }
            }
        }
Exemplo n.º 4
0
        internal static void AppDomainUnhandledException(object sender, UnhandledExceptionEventArgs args)
        {
            // args can never be null.
            Exception exception = (Exception)args.ExceptionObject;

            // log the exception to crimson event logs
            PSEtwLog.LogOperationalError(PSEventId.AppDomainUnhandledException,
                                         PSOpcode.Close, PSTask.None,
                                         PSKeyword.UseAlwaysOperational,
                                         exception.GetType().ToString(), exception.Message,
                                         exception.StackTrace);

            PSEtwLog.LogAnalyticError(PSEventId.AppDomainUnhandledException_Analytic,
                                      PSOpcode.Close, PSTask.None,
                                      PSKeyword.ManagedPlugin | PSKeyword.UseAlwaysAnalytic,
                                      exception.GetType().ToString(), exception.Message,
                                      exception.StackTrace);
        }
Exemplo n.º 5
0
        internal override void RaiseErrorHandler(TransportErrorOccuredEventArgs eventArgs)
        {
            string stackTrace;

            if (!string.IsNullOrEmpty(eventArgs.Exception.StackTrace))
            {
                stackTrace = eventArgs.Exception.StackTrace;
            }
            else if ((eventArgs.Exception.InnerException != null) && !string.IsNullOrEmpty(eventArgs.Exception.InnerException.StackTrace))
            {
                stackTrace = eventArgs.Exception.InnerException.StackTrace;
            }
            else
            {
                stackTrace = string.Empty;
            }
            PSEtwLog.LogOperationalError(PSEventId.TransportError, PSOpcode.Open, PSTask.None, PSKeyword.UseAlwaysOperational, new object[] { base.RunspacePoolInstanceId.ToString(), this.powershellInstanceId.ToString(), eventArgs.Exception.ErrorCode.ToString(CultureInfo.InvariantCulture), eventArgs.Exception.Message, stackTrace });
            PSEtwLog.LogAnalyticError(PSEventId.TransportError_Analytic, PSOpcode.Open, PSTask.None, PSKeyword.Transport | PSKeyword.UseAlwaysAnalytic, new object[] { base.RunspacePoolInstanceId.ToString(), this.powershellInstanceId.ToString(), eventArgs.Exception.ErrorCode.ToString(CultureInfo.InvariantCulture), eventArgs.Exception.Message, stackTrace });
            base.RaiseErrorHandler(eventArgs);
        }
Exemplo n.º 6
0
        protected void ProcessingThreadStart(object state)
        {
            try
            {
                string data = state as string;
                OutOfProcessUtils.ProcessData(data, callbacks);
            }
            catch (Exception e)
            {
                PSEtwLog.LogOperationalError(
                    PSEventId.TransportError,
                    PSOpcode.Open,
                    PSTask.None,
                    PSKeyword.UseAlwaysOperational,
                    Guid.Empty.ToString(),
                    Guid.Empty.ToString(),
                    OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION,
                    e.Message,
                    e.StackTrace);

                PSEtwLog.LogAnalyticError(
                    PSEventId.TransportError_Analytic,
                    PSOpcode.Open,
                    PSTask.None,
                    PSKeyword.Transport | PSKeyword.UseAlwaysAnalytic,
                    Guid.Empty.ToString(),
                    Guid.Empty.ToString(),
                    OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION,
                    e.Message,
                    e.StackTrace);

                // notify the remote client of any errors and fail gracefully
                if (_exitProcessOnError)
                {
                    originalStdErr.WriteLine(e.Message + e.StackTrace);
                    Environment.Exit(OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION);
                }
            }
        }
Exemplo n.º 7
0
 private void Start(string initialCommand)
 {
     this._initialCommand = initialCommand;
     this.sessionTM       = this.CreateSessionTransportManager();
     try
     {
         while (true)
         {
             string str = this.originalStdIn.ReadLine();
             lock (this._syncObject)
             {
                 if (this.sessionTM == null)
                 {
                     this.sessionTM = this.CreateSessionTransportManager();
                 }
             }
             if (string.IsNullOrEmpty(str))
             {
                 lock (this._syncObject)
                 {
                     this.sessionTM.Close(null);
                     this.sessionTM = null;
                 }
                 throw new PSRemotingTransportException(PSRemotingErrorId.IPCUnknownElementReceived, RemotingErrorIdStrings.IPCUnknownElementReceived, new object[] { string.Empty });
             }
             ThreadPool.QueueUserWorkItem(new WaitCallback(this.ProcessingThreadStart), str);
         }
     }
     catch (Exception exception)
     {
         CommandProcessorBase.CheckForSevereException(exception);
         PSEtwLog.LogOperationalError(PSEventId.TransportError, PSOpcode.Open, PSTask.None, PSKeyword.UseAlwaysOperational, new object[] { Guid.Empty.ToString(), Guid.Empty.ToString(), 0xfa0, exception.Message, exception.StackTrace });
         PSEtwLog.LogAnalyticError(PSEventId.TransportError_Analytic, PSOpcode.Open, PSTask.None, PSKeyword.Transport | PSKeyword.UseAlwaysAnalytic, new object[] { Guid.Empty.ToString(), Guid.Empty.ToString(), 0xfa0, exception.Message, exception.StackTrace });
         this.originalStdErr.WriteLine(exception.Message);
         Environment.Exit(0xfa0);
     }
 }
Exemplo n.º 8
0
        protected void Start(string initialCommand, PSRemotingCryptoHelperServer cryptoHelper, string workingDirectory = null, string configurationName = null)
        {
            _initialCommand = initialCommand;

            sessionTM = CreateSessionTransportManager(configurationName, cryptoHelper, workingDirectory);

            try
            {
                do
                {
                    string data = originalStdIn.ReadLine();
                    lock (_syncObject)
                    {
                        if (sessionTM == null)
                        {
                            sessionTM = CreateSessionTransportManager(configurationName, cryptoHelper, workingDirectory);
                        }
                    }

                    if (string.IsNullOrEmpty(data))
                    {
                        lock (_syncObject)
                        {
                            // give a chance to runspace/pipelines to close (as it looks like the client died
                            // intermittently)
                            sessionTM.Close(null);
                            sessionTM = null;
                        }

                        throw new PSRemotingTransportException(
                                  PSRemotingErrorId.IPCUnknownElementReceived,
                                  RemotingErrorIdStrings.IPCUnknownElementReceived,
                                  string.Empty);
                    }

                    // process data in a thread pool thread..this way Runspace, Command
                    // data can be processed concurrently.
#if !UNIX
                    Utils.QueueWorkItemWithImpersonation(
                        _windowsIdentityToImpersonate,
                        new WaitCallback(ProcessingThreadStart),
                        data);
#else
                    ThreadPool.QueueUserWorkItem(new WaitCallback(ProcessingThreadStart), data);
#endif
                }while (true);
            }
            catch (Exception e)
            {
                PSEtwLog.LogOperationalError(
                    PSEventId.TransportError,
                    PSOpcode.Open,
                    PSTask.None,
                    PSKeyword.UseAlwaysOperational,
                    Guid.Empty.ToString(),
                    Guid.Empty.ToString(),
                    OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION,
                    e.Message,
                    e.StackTrace);

                PSEtwLog.LogAnalyticError(
                    PSEventId.TransportError_Analytic,
                    PSOpcode.Open,
                    PSTask.None,
                    PSKeyword.Transport | PSKeyword.UseAlwaysAnalytic,
                    Guid.Empty.ToString(),
                    Guid.Empty.ToString(),
                    OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION,
                    e.Message,
                    e.StackTrace);

                if (_exitProcessOnError)
                {
                    // notify the remote client of any errors and fail gracefully
                    originalStdErr.WriteLine(e.Message);

                    Environment.Exit(OutOfProcessUtils.EXITCODE_UNHANDLED_EXCEPTION);
                }
            }
        }
Exemplo n.º 9
0
 private static void ReportExceptionForETW(XmlException exception)
 {
     PSEtwLog.LogAnalyticError(PSEventId.Serializer_XmlExceptionWhenDeserializing, PSOpcode.Exception, PSTask.Serialization, PSKeyword.Serializer | PSKeyword.UseAlwaysAnalytic, new object[] { exception.LineNumber, exception.LinePosition, exception.ToString() });
 }