Форум: "Прочее";
Текущий архив: 2014.05.11;
Скачать: [xml.tar.bz2];
Вниздельфи жив ;-( нид хелп Найти похожие ветки
← →
Sergey Masloff (2013-11-08 13:35) [0]Прилетел тут мне нежданчик. Вводная есть некий унаследованный сервис (windows service) на дельфи. Исходник и автор утеряны лет 6 назад. Все эти годы он исправно трудился 24*7 и тут сломался. И все это на мою седую (лысую) голову (только думал что на дельфи точно программировать точно не буду больше). Но это лирика.
Вобщем из общих знаний о том что эта штука делает и частично декомпильнув понял что ничего особого эта штука не делает кроме того что постоянно ищет некий запущеный exe (еще и как ищет - уже смешно ну да ладно) и если его нет запускает через CreateProcess. Exe что-то (знаю что) делает и умирает. После этого цикл повторяется.
Вот что обломилось - CreateProcess отрабатывает без ошибки но что-то созданный процесс я больше не наблюдаю. Такое впечатление что только что созданный процесс тут же дохнет еще не начав ничего выполнять. Причем без каких-либо внешних признаков.
Код естественно не менялся. Что такое могло случиться и куда смотреть когда CreateProcess возвращает 0 но ничего (похоже) не криэйтит. Воспроизводится это естественно только на той машине
← →
Kerk © (2013-11-08 13:39) [1]А если этот ехешник запустить вручную, он работает? Предположу, что работает, иначе бы ты по-другому вопрос ставил :). Но может, показывает какие-нибудь окошки повышения привелегий, например, а из под сервиса этого сделать не может?
← →
Rouse_ © (2013-11-08 13:40) [2]
> куда смотреть когда CreateProcess возвращает 0 но ничего
Как обычно в GetLastError
← →
antonn © (2013-11-08 13:43) [3]региональные настройки не менялись? а то есть багопроги завернутые в глухие тру-кэтчи... :)
← →
Sergey Masloff (2013-11-08 14:05) [4]exe отдельно запускается ;-)
Окошек никаких нет.
Вообще смотрю и плАчу... кто-то:
- написал виндовый сервис просто для того чтобы по таймеру дергать процедуру в Oracle
- из сервиса проверяет запущен ли exe через
if FindWindow("TfmMainXXX", nil)<>0 then
- Внутри сервиса лежит здоровенная форма с тучей компонентов вообще никак не используемая. Видимо когда-то он был простым exe который переделали в сервис...
и это все с 2006 года проработало
← →
Dimka Maslov © (2013-11-08 14:13) [5]Вот именно поэтому у меня напрочь прибито обновление Венды - они что-то там обновят, а потом всё работать перестаёт. Это моё видение причины. А вообще запустить просто так процесс из службы уже давно как не получается, надо всякие там прибамбахи делать перед запуском.
← →
брат Птибурдукова (2013-11-08 14:25) [6]
> Sergey Masloff (08.11.13 14:05) [4]
Это надо продать здешнему любителю^Wпрофессионалу покера. Он изойдёт слезами счастья и перестанить постить свой трэшак в WinAPI…
← →
Kerk © (2013-11-08 14:52) [7]
> antonn © (08.11.13 13:43) [3]
>
> региональные настройки не менялись? а то есть багопроги
> завернутые в глухие тру-кэтчи... :)
Не из под сервиса программа ведь работает.
> Sergey Masloff (08.11.13 14:05) [4]
>
> exe отдельно запускается ;-)
> Окошек никаких нет.
Я бы все-таки для начала вопрос в привилегиями проверил сверху до низу.
Ты и сервис скорее всего работаете от имени разных юзеров. Здесь может быть причина.
← →
Плохиш © (2013-11-08 14:59) [8]
> Исходник и автор утеряны лет 6 назад. Все эти годы он исправно
> трудился 24*7 и тут сломался.
Значит программа не причём. Ищите, что в окружении поменяли или пишите новую.
← →
antonn © (2013-11-08 15:05) [9]
> Не из под сервиса программа ведь работает.
а сервис - это system, у нее не свои настройки?
← →
antonn © (2013-11-08 15:05) [10]а вообще там еще вопрос по домену (есть ли он) и наследуемым правам
← →
Kerk © (2013-11-08 15:17) [11]
> antonn © (08.11.13 15:05) [9]
>
> > Не из под сервиса программа ведь работает.
>
> а сервис - это system, у нее не свои настройки?
А, понял. Вероятно свои, да.
Ну, в общем, я голосую за то, чтоб искать разницу между юзерами из под которых запускается программа. Нюансов множество. Вплоть до наличия нужных путей в PATH.
← →
sniknik © (2013-11-08 15:52) [12]> Видимо когда-то он был простым exe который переделали в сервис...
или может работать и так и так... обычно так и делаю, если что, сопровождать/отлаживать удобнее как обычную программу.
← →
Sergey Masloff (2013-11-08 15:54) [13]Ладно пойду по простому пути
exe-шник и шедулер может пускать по расписанию а использовать сервис просто как дергалку по таймеру оракловской процедуры... на то есть джобы
кстати сервис не под системом работает а под собственной учеткой.
← →
Пит (2013-11-08 15:55) [14]Сергей, а вы полностью от дельфи ушли, всё уже переписали на .NET?
← →
Sergey Masloff (2013-11-08 16:28) [15]Пит (08.11.13 15:55) [14]
>Сергей, а вы полностью от дельфи ушли, всё уже переписали на .NET?
Я теперь поднимаю сельское хозяйство на другом участке.
Возглавил OLAP направление...
← →
Eraser © (2013-11-08 16:51) [16]
> Sergey Masloff (08.11.13 13:35)
> и тут сломался
сломался видимо потому, что поменяли ОС на какую-то более современную.
дело скорее всего в том, что в новых ОС нет доступа GUI к 0 терм, сессии, точнее он есть, но отобразить что-то пользователю не получится.
← →
Sergey Masloff (2013-11-08 17:01) [17]Eraser © (08.11.13 16:51) [16]
ОС естественно не менялась. винда 2008 сервер. На машине 120 Гб оперативки ;-)
← →
Eraser © (2013-11-08 17:03) [18]
> Sergey Masloff (08.11.13 17:01) [17]
да, это уже относительно новая ОС, созданная с использованием "новых технологий" ) глупый вопрос - а в системном журнале приложений/служб каких либо отметок о крэше нет?
← →
Inovet © (2013-11-08 17:16) [19]> [17] Sergey Masloff (08.11.13 17:01)
> винда 2008 сервер. На машине 120 Гб оперативки ;-)
В смысле - мало по современным меркам?
← →
antonn © (2013-11-08 18:51) [20]2008 не R2 - это времен висты, не такая уж и новая
← →
Медвешонок Порошог (2013-11-08 19:54) [21]Exe что-то (знаю что) делает и умирает.
так шедулер же. и выбросить сервис.
← →
Eraser © (2013-11-08 20:39) [22]
> antonn © (08.11.13 18:51) [20]
отличия висты от windows 8.1 минимальны, фактически та же ОС.
← →
antonn © (2013-11-08 21:46) [23]
> отличия висты от windows 8.1 минимальны, фактически та же
> ОС.
значительно поумневший UAC :)
← →
Иксик © (2013-11-08 21:56) [24]Банально, но спрошу: а если экзешку вручную запускаешь, процесс появляется? Журнал ничего не говорит?
← →
Kerk © (2013-11-08 22:47) [25]
> Иксик © (08.11.13 21:56) [24]
См [1] и [4] :)
← →
Омлет © (2013-11-08 23:06) [26]Про обновления уже говорили, но повторюсь - недавно прилетела заплатка - http://www.securitylab.ru/vulnerability/447301.php
вполне возможно, что исправили косячно, якобы горячая была... Не в то ли время начались проблемы?
← →
Styx (2013-11-08 23:56) [27]
> недавно прилетела заплатка
Вообще-то заплатки ещё нет вроде. Но TIFF-то тут причём?
← →
Иксик © (2013-11-09 00:40) [28]
> Kerk © (08.11.13 22:47) [25]
>
>
> > Иксик © (08.11.13 21:56) [24]
>
> См [1] и [4] :)
Сорри! "Чукча писатель" (с) :))
← →
Омлет © (2013-11-09 13:29) [29]
> Styx (08.11.13 23:56) [27]
> Вообще-то заплатки ещё нет вроде.
Вроде как 5-6 числа появилась: http://blogs.technet.com/b/msrc/archive/2013/11/05/microsoft-releases-security-advisory-2896666-v2.aspx
Сама заплатка тут: https://support.microsoft.com/kb/2896666
По времени совпадает, Windows Server 2008 в списке. Поэтому я и предположил, что админ применил "fix it", т.к. уязвимость критическая.
Кстати, там же лежит штука, откатывающая изменения, производимые заплаткой.
← →
Styx (2013-11-09 17:13) [30]Так там не заплатка, просто предлагается отключить TIFF кодек, пока не будет исправленного.
← →
Омлет © (2013-11-09 18:36) [31]> Styx (09.11.13 17:13) [30]
Да, ты прав.
← →
Разведка (2013-11-10 04:42) [32]Судя по тому, что все меньше и меньше требуются вакансии на hh.ru, job.ru программистов делфи, то всего скорей Delphi - умер.
← →
R.I.P. (2013-11-10 12:54) [33]Для космонавтов там тож вакансий нет. Ж)
← →
Sergey Masloff (2013-11-10 18:27) [34]Вот чем кончилось. Переписал то же самое своими словами (я ж не знаю что там за исходник) и заработало
Код типа
var
StartupInfo:TStartupInfo;
ProcessInfo:TProcessInformation;
begin
GetStartupInfo (Startupinfo);
LogReport("Step 1");
if not CreateProcess(nil,
PChar(ExtractFileDir(ParamStr(0))+"\someprog.exe param"),
nil,
nil,
false,
DETACHED_PROCESS,
nil,
nil,
StartupInfo,
ProcessInfo) then
begin
LogReport("Step 1");
end;
почему не на шедулере виндовом пока что - я что-то не пойму как в нем запускать чаще чем раз в 5 минут
← →
Inovet © (2013-11-10 18:35) [35]> [34] Sergey Masloff (10.11.13 18:27)
> как в нем запускать чаще чем раз в 5 минут
Если вписать "1 мин" вместо "5 мин"?
← →
Sergey Masloff (2013-11-10 18:41) [36]Inovet © (10.11.13 18:35) [35]
>Если вписать "1 мин" вместо "5 мин"?
и что работает? я не пробовал ;-)
← →
Inovet © (2013-11-10 18:51) [37]> [36] Sergey Masloff (10.11.13 18:41)
Менять даёт, а дальше я тоже не стал пробовать. Наверняка это хранится где-нибудь в реестре в секундах или в милисекундах.
← →
ТимоховДА (2013-11-11 00:20) [38]для порядку я бы написал не
LogReport("Step 1");
а
LogReport("Step 2");
во втором случае применения LogReport.
:)
← →
Sergey Masloff (2013-11-11 08:10) [39]ТимоховДА (11.11.13 00:20) [38]
:-)
ты внимательный... это я когда писал сюда на автомате поставил... там текст несколько другой ;-)
← →
Юрий Зотов © (2013-11-11 09:13) [40]> Sergey Masloff (10.11.13 18:27) [34]
В ProcessInfo есть хэндлы порожденного процесса и его главного потока. Их оба надо освободить.
Страницы: 1 2 вся ветка
Форум: "Прочее";
Текущий архив: 2014.05.11;
Скачать: [xml.tar.bz2];
Память: 0.55 MB
Время: 0.002 c