Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
Приветстую!

Первый раз такое вижу. Есть оконное приложение на Delphi, внутри этого оконного приложения выполняется Pascal Script. По приходу данных по TCP из основного приложения дергается пара процедуру внутри Pascal Script (в основном приложении очередь запросов к PS).

В основное окно приложения идет вялый вывод в Memo строк лога. И все. В основной программе еще есть компонент для работы с COM-портом, но два порта через переходники USB <-> COM во время теста не используются, обмена данных по ним нет, да и порты эти собственно даже не открыты. Если что-то делать на компьютере - программа работает часами. При гашении монитора системой - немедленный сбой. В настройках системы - отключать монитор через 10 минут, спящий режим - никогда. Под подозрением - сбой очереди в главном приложении и корректность работы Pascal Script. Но как такое вообще может быть, какая тут связь? Если монитор просто выключить кнопкой питания - все работает...
20 июн 20, 13:00    [22154203]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50381

AleksVoronezh
Но как такое вообще может быть, какая тут связь?

Какой-то диверсант написал в твоей программе обработку сообщений питания. Найти и обезвредить.

Posted via ActualForum NNTP Server 1.5

20 июн 20, 13:02    [22154205]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
L.Otujktd
Member

Откуда:
Сообщений: 88
AleksVoronezh,

А исходники есть у Вас на руках? Скорее действительно стоит обработчик системных сообщений об отключении монитора, тем более если основной вывод идёт в мемо.
20 июн 20, 13:06    [22154207]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
white_nigger
Member

Откуда: Тула
Сообщений: 2323
Гасится экран или блокируется компьютер? В последнем случае есть варианты. Например такое возможно даже при получении координат мыши при заблокированном компьютере, при отсутствии проверки результата. Мы в своей библиотеке в свое время столкнулись с подобным.
20 июн 20, 13:28    [22154213]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12682
AleksVoronezh

В основное окно приложения идет вялый вывод в Memo строк лога. И все. В основной программе еще есть компонент для работы с COM-портом, но два порта через переходники USB <-> COM во время теста не используются, обмена данных по ним нет, да и порты эти собственно даже не открыты.
Отключите в настройках энергопотреблении временное отключение питания USB.
20 июн 20, 13:40    [22154217]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
white_nigger
Гасится экран или блокируется компьютер? В последнем случае есть варианты. Например такое возможно даже при получении координат мыши при заблокированном компьютере, при отсутствии проверки результата. Мы в своей библиотеке в свое время столкнулись с подобным.


Спасибо за ответы. Все исходники есть, конечно, программу делал я. Разумеется, используются и готовые компоненты, которые буду проверять. Экран гасится, компьютер не блокируется. Windows 10 Home. Насчет координат мыши тоже подумаю, спасибо.
20 июн 20, 13:42    [22154218]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
Соколинский Борис
AleksVoronezh

В основное окно приложения идет вялый вывод в Memo строк лога. И все. В основной программе еще есть компонент для работы с COM-портом, но два порта через переходники USB <-> COM во время теста не используются, обмена данных по ним нет, да и порты эти собственно даже не открыты.
Отключите в настройках энергопотреблении временное отключение питания USB.


И это нужно будет попробовать, согласен.
20 июн 20, 13:45    [22154219]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50381

Сначала лучше попробовать прогнать от компьютера блондинку для которой все ошибки
красненькие и тщательно исследовать что представляет из себя мистический "сбой".

Posted via ActualForum NNTP Server 1.5

20 июн 20, 14:05    [22154225]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
Запретил отключение (экономию энергии) для USB, сетевого адаптера и PCI-E в целом. Как будто стало лучше, но отчетливо видно даже по светодиоду на приборе, как только Windows отключает монитор, что светодиод мигает не так ритмично.

Путь там такой (для теста): первый прибор (в данном случает просто устройство с TCP) дергает основное приложение GET-запросом, в результате чего, встав сначала в очередь в основном приложении, из основного приложения вызывается PS скрипт, который через TCP-клиент Synapse дергает второй прибор, зажигая на нем светодиод. Второй прибор сообщает основному приложению (через TCP-сервер на Synapse), что светодиод зажжен. Это проходит обработку отдельной процедурой на PS, опять через ту же очередь, и отображается в WEB - интерфейсе. Работает часами, 5 часов точно, если Windows не гасит дисплей. Критичные элемент - очередь в приложении. Она построена на таймере из модуля MMSystem. Как бы Винда не чудила чего с этим таймером, когда гасит дисплей?
20 июн 20, 15:05    [22154236]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12682
AleksVoronezh, там вроде нечему чудить.
Я бы грешил на то, что винда приоритеты процессов как-то перераспределяет.
И, кстати, какая частота должна быть и какая становится?

Сообщение было отредактировано: 20 июн 20, 15:17
20 июн 20, 15:17    [22154241]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50381

Соколинский Борис
там вроде нечему чудить.

Правда? Меня лично удивляет, что это чудо на колёсиках вообще хоть как-то работает. Одна
"очередь на таймере" уже достойна кунсткамеры.

Posted via ActualForum NNTP Server 1.5

20 июн 20, 15:26    [22154245]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
Соколинский Борис,

Пакеты (GET-запросы), включающие и выключающие светодиод, следуют каждые 0,3 секунды. Выборка из очереди идет мультимедийным таймером с частотой 1 раз каждые 10 миллисекунд. Вот тут этот сбой хорошо видно. Это с мультимедийным таймером.

https://cloud.mail.ru/public/2P7p/3yo7H3AKp

Попробовал обычный таймер, поставил на 20мс (это очень оптимистично конечно) - поведение тоже. Гаснет экран - все встает колом.
Толи где-то в очереди косяк... но почему тогда работает при горящем дисплее?
20 июн 20, 15:33    [22154247]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12682
Dimitry Sibiryakov,
я отвечал конкретно о таймере высокого разрешения, который в чипсет встроен. Трудно представить, отчего его может колбасить в данной ситуации.
20 июн 20, 15:34    [22154248]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12682
AleksVoronezh
Пакеты (GET-запросы), включающие и выключающие светодиод, следуют каждые 0,3 секунды.
Точнее сказать, они отправляются каждые 0.3 секунды, и то, что они будут с равными интервалами приходит в обработчик никто не гарантировал.
В любом случае глюк явно не из-за таймера.
Я бы для начала зашил в исходящие пакеты таймптамп-ы и исследовал периодичность их прилета до и после.
20 июн 20, 15:41    [22154251]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
Соколинский Борис, согласен, но это все на одном коммутаторе, сеть не загружена... идеальные условия почти.

Небольшая разница визуально присутствует всегда. Но при гашении дисплея - она становится катастрофической.
А как же видео, которое я выложил, наконец?
20 июн 20, 15:45    [22154253]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12682
AleksVoronezh
Соколинский Борис, согласен, но это все на одном коммутаторе, сеть не загружена... идеальные условия почти.
Это не только от сети зависит, в цепочке еще участвует некий процесс[ы], который пакеты обрабатывает. Ну и, собственно, само приложение которому винда процессорное время выделяет. ИМХО, сюда нужно копать, для начала проэкспериментировать с приоритетом REAL_TIME.
20 июн 20, 16:11    [22154259]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 50381

AleksVoronezh
А как же видео, которое я выложил, наконец?

Видео никого не волнует. Windows не является системой реального времени и ничто (включая
мультимедийный таймер) не гарантирует время отклика. Начни протоколировать события с
таймштампами чтобы посмотреть где именно растёт интервал. А расти он может где угодно,
включая, например, NAGLE алгоритм TCP стэка или квант времени системного шедулера. Да и
частота процессора способна падать в район нуля.

Posted via ActualForum NNTP Server 1.5

20 июн 20, 16:20    [22154260]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
> Да и частота процессора способна падать в район нуля.

Не могу с этим не согласиться. Но мы тут "ловим" не микросекунды и даже не миллисекунды - а несколько десятых долей секунды в общем. Что бы такие задержки на ровном месте... ? Логика была такая, что в основном приложении всегда что-то выполняется - по диспетчеру задач я вижу, что оно занимает почти постоянно 7-10% CPU. Как бы совсем засыпать оно не должно, там боле - весь комп. Хотя и не спорю, можно будет попробовать изменить приоритетет для него. Кстати, совсем уже в порядке конспирологии, оппробовал с играющим в фоне Foobar - лучше не стало.
20 июн 20, 20:19    [22154316]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
x1ca4064
Member

Откуда:
Сообщений: 1128
AleksVoronezh,

OpenSSL используется?
20 июн 20, 22:40    [22154369]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
Соколинский Борис
Member

Откуда: Москва
Сообщений: 12682
AleksVoronezh
Как бы совсем засыпать оно не должно, там боле - весь комп.
У винды может быть иное мнение на этот счет. Я не удивлюсь, если она считает процесс перехода в другой режим самым приоритетным.
20 июн 20, 22:58    [22154374]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
Нет, OpenSSL не используется. Строго говоря, в приложении есть Standalone IntraWeb сервер, вот он не виснет, и продолжает исправно отдавать станицы. Еще там создается экземпляр TCP-сервера на базе Synapse и очередь, выборка из которой происходит по таймеру на основе модуля MMSystem. Пока я больше всего грешу на таймер. Но возможно, и у меня там кривизна где-то нереальная. Но почему работает часами, когда Windows не отключает монитор?
20 июн 20, 23:08    [22154376]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
GunSmoker
Member

Откуда:
Сообщений: 3140
А если сделать Fast Switch (смена пользователя)?

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

Так что код - в студию.
20 июн 20, 23:17    [22154379]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
AleksVoronezh
Member

Откуда:
Сообщений: 352
Добрый вечер! Спасибо за ответ.

procedure TimerProc(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD) stdcall; // Обработка очереди

type
    TFunc = function(Param1,Param2,Param3: String):boolean of object;
var
    F: TFunc;
    Function_Name: String;
    Data_String: String;


begin

Try

 CriticalSection.Enter;

 If ( Pascal_S='') Or ( PS_IS_Ready='No' ) Or ( Function_Name_Queue.isEmpty ) Then Exit; // Проверка на готовность движка PS и не пустую очередь

 Function_Name:=Function_Name_Queue.Dequeue; // Извлечение из очереди имени процедуры внутри Pascal Script
 Data_String:=Data_String_Queue.Dequeue;  // Извлечение из очереди строковых данных для процедуры

 F := TFunc(Form3.PSScript1.GetProcMethod(Function_Name)); // Обращение к прцедуре внутри Pascal Script
 if @F = nil Then Exit;

 PS_IS_Ready:='No'; // Флаг, что движок PS будет занят

 F(Data_String,'',''); // Обращение к движку PS

Finally
  CriticalSection.Leave
End;


end;



Вот процедура обработки в таймере. То, что тестирую сейчас. Перед этим было обращение к PS отдельной процедурой, и внутри нее - критическая секция...
20 июн 20, 23:53    [22154400]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
GunSmoker
Member

Откуда:
Сообщений: 3140
Ну так добавьте логгинг каждого шага. Процедура вызывается? Если да, то на чём тогда внутри встаёт?
21 июн 20, 08:19    [22154439]     Ответить | Цитировать Сообщить модератору
 Re: Программа сбоит кргда Windows 10 отключает монитор  [new]
jack_vosmerkin
Member

Откуда:
Сообщений: 53
проблема может быть гораздно глубже

в любом билде десятки есть такой глюк когда включаешь ночной режим, ждешь отключения монитора по таймеру, шевелишь мышку и ночной режим исчезает хотя кнопка показывает, что он активный
21 июн 20, 12:49    [22154511]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить