06.04.2023, 23:04 | #17 |
Участник
|
А возможно что там на входе 64-битный счетчик типа аксаптовского \Classes\WinAPI\getTickCount64
(System.DateTime::get_Now()) который считает некие тики. Если это тики процессора, то переполняться может достаточно часто (кстати, если не ошибаюсь, то размер "тик"-а для System.DateTime зависит от версии .net - отсюда и зависимость частоты возникновения глюков от версии винды. Выше версия винды - более мелкий тик - чаще переполняется счетчик). И возможно что значение этого счетчика трактуется в коде как беззнаковое целое, а используется знаковое целое и при переходе через максимальное целое нормально не обрабатывается при этом. Получается что если TickStart был положительным целым, а TickFinish перемахнул в область отрицательных, то разница их по модулю всегда будет больше или равная чем 2^63 А само число будет всегда меньше или равно чем -2^63 Но больше не влезает в размерность числа, вот мы и получаем всегда -2^63 Если эти предположения верны, то можно попробовать пофиксить приложение, чтобы корректно обрабатывало такие случаи (где бы еще взять исходники. Хотя при определенном желании можно дизассемблировать и пересобрать). Ну или заставить все это работать с меньше точностью (задействовать более старую версию дотнет или запустить в режиме совместимости со старой версией винды) Последний раз редактировалось Logger; 06.04.2023 в 23:24. |
|
Теги |
ax2009, trace parser |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|