私たちはWPFアプリケーションをビルドしており、BCL内から発生していると思われるランダムで非常に奇妙な動作を見ています。我々は、次のスタックトレースで未処理の例外をキャッチされていますTimeSpan.FromSeconds(-1.0)とdouble.NaN
今[ArgumentException],
"TimeSpan does not accept floating point Not-a-Number values."
at System.TimeSpan.Interval(Double value, Int32 scale)
at System.Windows.Threading.Dispatcher.Invoke(DispatcherPriority priority, Delegate method, Object arg)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
、我々はリフレクターを信じるのであれば、呼び出し元のメソッド(Dispatcher.Invoke)は、引数ので、引数の例外をスロー
...,TimeSpan.FromSeconds(-1.0),...
を呼び出します渡されるのは二重にtrueを返す.NaN。これは明らかに意味をなさないものであり、私たちはこれを非常に困惑していると感じました。
小さなサンプルでこの現象を再現することはできませんでした。そのため、私たちは完全なアプリケーションでこの(および他の一見関連するTimeSpanの例外も)原因を特定する方法を探しています。これらの一見ランダムな原因は何の症状
- のように何のためにグーグルで運を持っていない、誰もがそのような行動を見ているか認識して我々は、彼らが我々は、誰かがして私たちを助けることができることを望む質問の数を持っています基本的な数学の振る舞い、スタックやヒープをどうにか破壊していますか?
- 私は何とかTimeSpan.Interval(おそらくWinDbg?)でILをデバッグし、スタック/ヒープを改ざんして検査して値を確認できますか?
私たちのアプリケーションは非常にデータが重く、多くのデータが非同期に取り込まれ、データバインディングがたくさんありますが、私たちが得ることができたスタックトレースから、これを指し示す煙草はないとわかります。
質問を明確にするには:前に説明した動作を誰かが見たことがありますか、症状を認識しているか、状況をデバッグする方法を入力しましたか?
思考、コメント、アイデア、提案?
私はこれをMicrosoftに報告しようとします。かなり奇妙な行動のように聞こえる。 – leppie
まったく同じsimptom、同じスタックトレースがあります。しかし、私はどこを見るかの手掛かりはありません。私たちのプログラムも大きく、TimeSpan.From ...の呼び出しはすべてNaNを含むことができないint-sで行われます。 –