Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Windows XP, странный глюк с изменением даты.

Модерирует : KLASS, IFkO

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

Открыть новую тему     Написать ответ в эту тему

mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ryoohki, утешает одно, что хоть не на java. А то пришлось бы всю виртуальную машину впихивать.

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 22:04 06-11-2021
ryoohki



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Пришлось исхитряться. Динамическая линковка нужна потому, что этот ноут имеет не только Window XP снятую с поддержки давным давно, и последние Platform SDK не поддерживают эту ОС. Но так же имеет старый ЦП без SSE2. А MSVC 2017 генерирует CRT статик с SSE2 (видимо невнимательный индус писал).

Всего записей: 8 | Зарегистр. 07-06-2006 | Отправлено: 22:31 06-11-2021
mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ryoohki

Цитата:
видимо невнимательный индус писал

Индус ведь не знал что живы еще камни без рун sse2, простим?
 
Все же решил проблему (временно) с обменником, если надо качайте из этого поста. Думаю что мое поделие будет по душе минималистам, все же 1.3 кб включая исходник против 13 мб кода, есть из чего выбирать, и это хорошо.

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 14:10 07-11-2021
ryoohki



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Программы разные по принципу работы. Первая задача, которую я решал, на самом деле была не в неверной дате, а в том, что ноутбук до сих пор работает в составе некоей технологической установки и должен загружаться полностью автоматически, а сообщение о неверной дате блокировало загрузку. И только потом выяснилось, что сбитая дата так же смущает некоторые программы и сервисы XP, и те крешаться (не каждая программа выживет при отрицательном Unix-time).

Всего записей: 8 | Зарегистр. 07-06-2006 | Отправлено: 20:21 07-11-2021
mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ryoohki, это понятно, никто и не спорит с тем что ваше решение более правильное. Речь идет о свободе выбора, между тем что проще и тем что правильнее. И это хорошо. А вообще для консенсуса, переписать бы ваш код с c++ на асссемблер, цены б ему небыло, и все вопросы отпали бы сами.
 
p.s: На данный момент я пересел на андрюшку, и постигаю java,  а потому поднимать старые знания и библиотеки по x86 архитектуре мне облом.

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 18:31 10-11-2021 | Исправлено: mgtow, 18:38 10-11-2021
mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ryoohki, нашел небольшой баг в вашем решении.
При переходе в спящий/ждущий режим и назад в win дата опять устанавливается в 19XX.

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 17:56 22-11-2021 | Исправлено: mgtow, 17:59 22-11-2021
ryoohki



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для предложений и замечаний лучше использовать соответствующие инструменты:
https://github.com/raspopov/DateFixTool/issues

Всего записей: 8 | Зарегистр. 07-06-2006 | Отправлено: 18:20 22-11-2021
justmann



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Никаких проблем с датой/временем в Windows XP не наблюдается, как в виртуальных машинах, так и на реальном железе 2005/2012 годов. Все установки с оригинальных дистрибутивов с полным комплектом обновлений под систему + таймзоны.

 
Наблюдается.... Ещё и как наблюдается....
 
 
Уход времени "вперёд" на многоядерных процессорах под Windows XP
 
При использовании Windows XP на материнских платах с многоядерными CPU обнаружился досадный глюк - системное время уходит вперёд, причем степень ухода зависит от активности работы ПК и может набегать до 5 минут в день. Проблема проявляется только в Windows XP. На выключенном ПК, под UEFI/BIOS или в современной ОС - время идет правильно. Хотя часовая микросхема RTC должна быть независимой частью, но на современных материнских платах это не так. Исследование показало, что уход часов "вперед" происходит при постоянном переключении периода системного таймера 16 мс в 1 мс и обратно. В Windows XP (по умолчанию) этот таймер работает с периодом 16 мс и если на ПК не проявлять активности - то системный таймер продолжит работать с периодом 16 мс. Но при запуске Хрома или мультимедиа приложений, таймер переключается в режим работы с периодом 1 мс и может возвращаться на 16 мс. При жестко установленном периоде 16 мс (или 1 мс) время идет точно, но при постоянном переключении таймера 16 мс - 1 мс - 16 мс - 1 мс происходит сбой в работе часов реального времени RTC.
 
Решение проблемы:
Поскольку специалисты с Win-Raid не смогли разобраться с причиной данной проблемы, то "красивого" решения (на уровне патча системных файлов) по состоянию на 3 января 2021 года ещё не появилось. Имеющиеся правленые файлы hal.dll и intelppm.sys решают какую-то другую проблему с таймерами, но описанный глюк никак не влияют. Зато мы имеем "костыльное" решение - программа Timer_Fix с исходным кодом, написанная на Visual Studio 6.0. Программа не имеет интерфейса, после запуска она переведет системный таймер на период 1 мс и оставит его неизменным, программа постоянно висит в процессах до перезагрузки ОС. Для завершения работы (в случае необходимости) нужно просто прибить процесс Timer_Fix.exe через "Диспетчер задач". Для удобства лучше положить данную программу в "Автозагрузку" и напрочь забыть о проблеме с уходом времени. Каких-либо косяков от использования данного метода не обнаружено. В целом, данный фикс можно считать "костыльным", но ничего лучшего на данный момент нет.
 
Скачать - https://www.upload.ee/files/13002205/Soft_Control_Time.zip.html или https://yadi.sk/d/KpTGDPITsNWn7w
 
Программа демонстрации RTC bug (программа накрутки времени):
 
RTC_bug_demonstrations\Timer_v10\Timer_src_BCB6.0 - исходные коды программы
RTC_bug_demonstrations\Timer_v10\timeBeginPeriod.exe
RTC_bug_demonstrations\Timer_v10\timer.exe
 
Данная программа служит для наглядной демонстрации проблемы с RTC таймером. Она устанавливает период системного таймера 1 мс (0.977 мс) выдерживает 0.2 секунды, устанавливает 16 мс (15.625 мс) выдерживает 0.2 секунды и далее продолжает переключать системный таймер с заданными длительностями. Программа состоит из 2-х частей:
1. timeBeginPeriod.exe - консольная программа для установки режима таймера. Заданный режим (период и длительность) передаётся в параметрах командной строки. Программа представлена с исходным кодом на Borland C++ Builder 6.0.
2. timer.exe - это GUI интерфейс для timeBeginPeriod.exe. В графическом режиме можно задать период 1, длительность 1 и период 2, длительность 2 работы системного таймера. Программа представлена с исходным кодом на Borland C++ Builder 6.0.
Важно!!! Для корректной работы timeBeginPeriod.exe и timer.exe должны находиться рядом, в одной директории.
 
   
 
Проверка RTC-bug:
1. Проверку производим на свежезагруженной системе, без выполняющихся фоновых задач. Все фоновые процессы должны быть закрыты, поскольку они могут удерживать таймер на 1 мс, что помешает работе демонстрационной программы.
2. Запускаем Clockres - программу для контроля периода системного таймера. Измеренный период должен = 15.625 мс
3. Запускаем CPU-Z, переходим на закладку About, нажимаем кнопку Timers и кнопку Start, чтобы контроллировать частоты системных таймеров
4. Запускаем timer.exe. Устанавливаем режимы Период 1 = 1 мс, Длительность 1 = 0,2 секунды, Период 2 = 16 мс, Длительность 2 = 0,2 секунды и нажимаем кнопку Start. Эти режимы заданы режимами по-умолчанию.
5. В установленном режиме (по-умолчанию) будет происходить "накрутка" времени RTC таймера приблизительно +2 секунды за 1 минуту работы программы. При Длительности = 0.1 секунда, накрутка времени будет составлять +4 секунды за 1 минуту.
 
Состав архива:
Clockres - программа для контроля периода системного таймера
CPU-Z - в закладке About, кнопка Timers можно контроллировать частоты системных таймеров
Neutron 1.07 - программа для контроля и синхронизации времени через интернет
Timer_Fix (с исходным кодом) - фикс проблемы с уходом времени вперед (устанавливает таймер на 1мс)
Timer_v10 (с исходным кодом) - программа накрутки времени, для демонстрации проблемы
 
Скачать (2 МБ) - https://www.upload.ee/files/13095203/RTC_bug_demonstrations.zip.html
 
На замену консольной Clockres, по моей просьбе, программист Xenia разработала программу Timer_Interval_v4 - графическую замену Clockres. Программа измеряет интервал таймера каждые 50 мс и выводит измеренное значение на экран поверх всех окон.
 
   
 
Скачать Timer_Interval_v4 (с исходным кодом) - https://www.upload.ee/files/13142806/Timer_Interval_v4.zip.html
 
Ещё раз о RTC баге на многопроцессорном ядре
 
Вначале я полагал, что баг присущ исключительно "современным" материнским платам (новее 2014 года), которые не предназначены для Windows XP. Но проведя тесты на ПК 2008-2009 года сборки, который имеет официальную поддержку Windows XP я обнаружил такой-же баг! В тесте принимал участие Intel Celeron Core 2 Duo (2 ядра @ 2,8 GHz) на материнской плате с чипсетом G41. Поскольку оборудование довольно старое и имеет официальную поддержку Windows XP, то проверка делалась на оригинальном MSDN образе WinXP Pro SP3, со всеми штатными драйверами. Все только официальное, никаких модификаций. Но RTC баг всё равно есть!
 
Неделю ранее, я получил подтверждение от товарища, который также тестировал на 2-х ядерном ПК и подтвердил накрутку времени при частом использовании Хрома. До этого, он не понимал причину и пенял на неточный часовой кварц. Но мы то теперь знаем, что ни кварц, ни батарейка не причем! В данное время я имею 100% подтверждение бага, на 3-х ПК из 3-х испытуемых. Из данного факта делаю вывод, что RTC багу подвержены абсолютно все системы с 2-х (и более) ядерным Intel-процессором. Происходит ли это на АМД не известно, нет такого ПК.
 
Для подтверждения бага нужно:
1) 2-х или более ядерный Intel процессор с установленной Windows XP (причем железо может быть и довольно старое, на ПК 2008 года баг уже проявляется)
2) Отсутствие постоянно запущенной программы, удерживающей таймер на 1 мс (0.977 мс). На свежезагруженной ОС дефолтное значение периода должно быть = 16 мс, проверяется через Clockres
 

Всего записей: 344 | Зарегистр. 08-06-2021 | Отправлено: 22:39 22-11-2021
mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо, очень познавательно. Но у нас проблема связана не только с win xp, а еще и с определенной моделью пк, а именно -
ноутбуки hp xe4100, и заключается в том, что phoenix bios при каждой загрузке, портит системную дату переводя год в 19xx.

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 22:11 28-11-2021
justmann



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Спасибо, очень познавательно. Но у нас проблема связана не только с win xp, а еще и с определенной моделью пк, а именно -
ноутбуки hp xe4100, и заключается в том, что phoenix bios при каждой загрузке, портит системную дату переводя год в 19xx.

 
Я понял. Это проблема конкретного железа. На винрейде есть ребята, которые патчат BIOS, попробуйте обратиться к ним.

Всего записей: 344 | Зарегистр. 08-06-2021 | Отправлено: 00:44 02-12-2021
mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ryoohki
Цитата:
Для предложений и замечаний лучше использовать соответствующие инструменты:  
https://github.com/raspopov/DateFixTool/issues

Ноги у темы ростут отсюда если что, но как скажете.
 
Еще одна "мелочь но приятно" (багрепорт): Ваше решение после выплнения основной функции, скромно висит в памяти и кушает без того скромные ресурсы, зачем?

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 11:51 12-12-2021 | Исправлено: mgtow, 12:00 12-12-2021
ryoohki



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В соответствии с вышеописанным алгоритмом программа должна перевести время в безопасный интервал при завершении работы компьютера, обычно это происходит только при выключении.
 
Это сервис и он ничего не потребляет, потому что ничего не делает вплоть до момента завершения.  
 
И похоже вы не усыпляете ноутбук, а гибернируете, из-за этого он не выключается для программ, но фактически обесточивается, и к сожалению этого достаточно для потери даты...

Всего записей: 8 | Зарегистр. 07-06-2006 | Отправлено: 06:39 13-12-2021
mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ryoohki
Цитата:
программа должна перевести время в безопасный интервал при завершении работы компьютера

Разве во время работы время находится не в безопасном интервале? В чем смысл данного действа?

Цитата:
Это сервис и он ничего не потребляет

Если оценивать с точки зрения современной техники, то да, но сабжу больше 20 лет, и  лишний мегабайт занятой памяти тоже не помешал бы.

Цитата:
И похоже вы не усыпляете ноутбук, а гибернируете

Я активно использую оба режима и в обоих режимах год устанавоивается как 19хх
 
Вобщем временно удалил ваше решение, снова поставил костыль. Он хоть и костыль, но хотя бы в памяти не висит.

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 07:16 13-12-2021
RomanKotel



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
хотя бы в памяти не висит

Можно в стандартном планировщике сделать задачу - пусть раз в час (или при пробуждении, включении и т.п.) запускается!

Всего записей: 35 | Зарегистр. 19-06-2008 | Отправлено: 20:58 06-01-2022
mgtow



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
RomanKotel

Цитата:
Можно в стандартном планировщике сделать задачу

Во первых, в чем преимущество такого подхода?  
Во вторых, указанный Планировщик давным-давно отключен, и его службы так же, по тем же соображениям экономии, которые современному обывателю с терабайтами и гигафлопами всего-на-свете не понять.

Всего записей: 69 | Зарегистр. 10-11-2019 | Отправлено: 21:07 07-01-2022 | Исправлено: mgtow, 15:50 11-06-2023
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2

Компьютерный форум Ru.Board » Операционные системы » Microsoft Windows » Windows XP, странный глюк с изменением даты.


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru