битной сборке версии под Windows (которые приводят к падениям по ассерту в релиз версии у пользователей, сам я не могу такое воспроизвести). Я поймал в логе это неадекватное поведение:
https://github.com/telegramdesktop/tdesktop/commit/868015da251e15fc141c31a8235c4c2207961c53#diff-9df39ac4d87e709081853fbbb14803cd3adc4dfbae66e8f16affe210bd2ad41eR851-R858
Выдаёт (options.speed тут double, crl::time тут std::int64_t):
track_time_adjusted,world:198922,adjust:278,speed:1,delta:278,rounded:278,casted:-9223372036854775808,final:-9223372036854775808
То есть C-style каст 278. в std::int64_t в какой-то момент даёт int64_min. При этом в логе до этого идут десяток таких же, но нормальных:
track_time_adjusted,world:198706,adjust:69,speed:1,delta:69,rounded:69,casted:69,final:69
track_time_adjusted,world:198792,adjust:155,speed:1,delta:155,rounded:155,casted:155,final:155
и т.д., и таких валится очень много, на процессорах около 10 летней давности:
AuthenticAMD family 15 model 79 stepping 2, 1 CPU.
AuthenticAMD family 16 model 4 stepping 3, 4 CPUs.
AuthenticAMD family 16 model 6 stepping 3, 2 CPUs.
AuthenticAMD family 18 model 1 stepping 0, 3 CPUs.
GenuineIntel family 15 model 6 stepping 5, 2 CPUs.
Есть идея, в чём я не прав и что с этим можно сделать? 😕 Могла это VS2019 в какой-то момент обновиться и как-то иначе начать генерировать 32 битный код, и может можно какой-то свич повернуть, чтобы заработало нормально?..
Единственная идея - 155 и 64 меньше, чем 255, а 278 больше, чем 255. Пробовали захардкодить adjust в 278 и options.speed в 1.0, и посмотреть под отладчиком, что получается?
у тебя доступ к этим железкам хоть какой-то есть?
Увы, даже живого юзера нет на связи с ними, только крашрепорты сыпятся, когда уже собрал версию. Но видимо надо как-то получать такого. Или запихать туда проверок с вываливанием с ошибкой и забить :(
Падение по ассерту в релиз? Ну ок, а какой ассерт, что он то говорит?
На моей машине там всё ок с таким значением, а в логах бывают и другие: stp.worldTime:460724;stp.trackTime:0;track_time_adjusted,world:460737,adjust:13,speed:1,delta:13,rounded:13,casted:13,final:13 stp.worldTime:460724;stp.trackTime:0;reading_frames,time:13 stp.worldTime:460724;stp.trackTime:0;reading_enough_frames,time:13 ... stp.worldTime:460724;stp.trackTime:0;track_time_adjusted,world:460764,adjust:40,speed:1,delta:40,rounded:40,casted:-9223372036854775808,final:-9223372036854775808 То есть у кого-то для 13. сработало, а потом для 40. не сработало.
Возможно, стоит посмотреть на генерируемый код и погуглить соответствующие инструкции и их поведение на конкретных процессорах, может там есть особенности поведения (или баги)
Обсуждают сегодня