KirillOsenkov / MSBuildStructuredLog

A logger for MSBuild that records a structured representation of executed targets, tasks, property and item values.
MIT License
1.42k stars 188 forks source link

Unexpected exception: System.ArgumentException: '-8859677755619,21' is not a valid value for property 'Width'. #601

Closed patryk9200 closed 7 months ago

patryk9200 commented 2 years ago

Hi,

When I was working with StructuredLog I've got an unexpected error with this message:

Unexpected exception. Sorry about that.

Please Ctrl+C to copy this text and file an issue at https://github.com/KirillOsenkov/MSBuildStructuredLog/issues/new

System.ArgumentException: '-8859677755619,21' is not a valid value for property 'Width'.

at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)

at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)

at StructuredLogViewer.Controls.TracingControl.CreatePanelForNodeDivider(Boolean showTime) in C:\projects\msbuildstructuredlog\src\StructuredLogViewer\Controls\TracingControl.xaml.cs:line 362

at StructuredLogViewer.Controls.TracingControl.Draw() in C:\projects\msbuildstructuredlog\src\StructuredLogViewer\Controls\TracingControl.xaml.cs:line 298

at StructuredLogViewer.Controls.TracingControl.SetTimeline(Timeline timeline, Int64 globalStart, Int64 globalEnd) in C:\projects\msbuildstructuredlog\src\StructuredLogViewer\Controls\TracingControl.xaml.cs:line 234

at StructuredLogViewer.Controls.BuildControl.PopulateTrace() in C:\projects\msbuildstructuredlog\src\StructuredLogViewer\Controls\BuildControl.xaml.cs:line 404

at StructuredLogViewer.Controls.BuildControl.CentralTabControl_SelectionChanged(Object sender, SelectionChangedEventArgs e) in C:\projects\msbuildstructuredlog\src\StructuredLogViewer\Controls\BuildControl.xaml.cs:line 314

at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)

at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)

at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)

at System.Windows.Controls.TabControl.OnSelectionChanged(SelectionChangedEventArgs e)

at System.Windows.Controls.Primitives.Selector.SelectionChanger.End()

at System.Windows.Controls.Primitives.Selector.SetSelectedHelper(Object item, FrameworkElement UI, Boolean selected)

at System.Windows.Controls.Primitives.Selector.NotifyIsSelectedChanged(FrameworkElement container, Boolean selected, RoutedEventArgs e)

at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)

at System.Windows.Controls.TabItem.OnSelected(RoutedEventArgs e)

at System.Windows.Controls.TabItem.OnIsSelectedChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)

at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)

at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)

at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)

at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)

at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)

at System.Windows.DependencyObject.SetCurrentValueInternal(DependencyProperty dp, Object value)

at System.Windows.Controls.TabItem.OnPreviewGotKeyboardFocus(KeyboardFocusChangedEventArgs e)

at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)

at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)

at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)

at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)

at System.Windows.Input.InputManager.ProcessStagingArea()

at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)

at System.Windows.Input.KeyboardDevice.TryChangeFocus(DependencyObject newFocus, IKeyboardInputProvider keyboardInputProvider, Boolean askOld, Boolean askNew, Boolean forceToNullIfFailed)

at System.Windows.Input.KeyboardDevice.Focus(DependencyObject focus, Boolean askOld, Boolean askNew, Boolean forceToNullIfFailed)

at System.Windows.Input.KeyboardDevice.Focus(IInputElement element)

at System.Windows.UIElement.Focus()

at System.Windows.Controls.TabItem.SetFocus()

at System.Windows.Controls.TabItem.OnMouseLeftButtonDown(MouseButtonEventArgs e)

at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)

at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)

at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

at System.Windows.UIElement.ReRaiseEventAs(DependencyObject sender, RoutedEventArgs args, RoutedEvent newEvent)

at System.Windows.UIElement.OnMouseDownThunk(Object sender, MouseButtonEventArgs e)

at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)

at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)

at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)

at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)

at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)

at System.Windows.Input.InputManager.ProcessStagingArea()

at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)

at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)

at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)

at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)

at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)

at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)

at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)

KirillOsenkov commented 2 years ago

which tab did you click on? Tracing or Timeline? or Graph?

patryk9200 commented 2 years ago

Actually I had problem on all of them. If you want I can send you my binary log file so you will be able to look into it yourself.

KirillOsenkov commented 2 years ago

yes if you email it to my first name dot last name at microsoft, I'll try to reproduce it locally. Thanks!

KirillOsenkov commented 2 years ago

Thanks, I have received your binlog. It seems corrupted and this is what I see:

Error when reading the file: System.IO.InvalidDataException: String record number 14622 is invalid: string index -11 is not within 7257.
   at Microsoft.Build.Logging.StructuredLogger.BuildEventArgsReader.GetStringFromRecord(Int32 index) in C:\MSBuildStructuredLog\src\StructuredLogger\BinaryLogger\BuildEventArgsReader.cs:line 1189
   at Microsoft.Build.Logging.StructuredLogger.BuildEventArgsReader.ReadBuildEventArgsFields(Boolean readImportance) in C:\MSBuildStructuredLog\src\StructuredLogger\BinaryLogger\BuildEventArgsReader.cs:line 925
   at Microsoft.Build.Logging.StructuredLogger.BuildEventArgsReader.ReadBuildMessageEventArgs() in C:\MSBuildStructuredLog\src\StructuredLogger\BinaryLogger\BuildEventArgsReader.cs:line 662
   at Microsoft.Build.Logging.StructuredLogger.BuildEventArgsReader.Read() in C:\MSBuildStructuredLog\src\StructuredLogger\BinaryLogger\BuildEventArgsReader.cs:line 145
   at Microsoft.Build.Logging.StructuredLogger.BinLogReader.Replay(Stream stream, Progress progress) in C:\MSBuildStructuredLog\src\StructuredLogger\BinaryLogger\BinLogReader.cs:line 104

The file size I got is 246,731 bytes and the MD5 is 6308353b8f96b4ddf1777d268210b83d. Did the file get corrupted?

patryk9200 commented 2 years ago

It looks like it, I have exactly the same MD5. That's interesting, because I've build my project couple of times and I always got the same result, maybe there is some other issue that breaks this file when I'm building my application. I will check, if I can still reproduce it.

KirillOsenkov commented 2 years ago

I think you might have a crash that kills msbuild mid-build, so the log gets interrupted. You can try running MSBuild.exe under the debugger to see the crash. Also enable LocalDumps in the registry to automatically capture a dump of every crashing process.

KirillOsenkov commented 7 months ago

I've made a defensive fix, and the argument exception doesn't reproduce for me.

patryk9200 commented 7 months ago

@KirillOsenkov Thanks for fixing this, that looks great! It doesn't reproduce for me too.