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 }); }
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); } }
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); } } }
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); }
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); }
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); } } }
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); } }
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); } } }
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() }); }