Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1384162167
L8
2013-11-11 13:29
2014.05.11
Прямоугольник повернули. Найти получившийся прямоугольник.


15-1383896096
[ВладОшин]
2013-11-08 11:34
2014.05.11
Нашел у джедаев TJvForthScript. Никто не юзал?


15-1383903333
Sergey Masloff
2013-11-08 13:35
2014.05.11
дельфи жив ;-( нид хелп


15-1383955676
KilkennyCat
2013-11-09 04:07
2014.05.11
А в какой виндоус была заставка-ожидания отправки почты


15-1384201803
Юрий
2013-11-12 00:30
2014.05.11
С днем рождения ! 12 ноября 2013 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский