Program nie uruchamia się tyko wisi w procesach

0

Piszę mój program w Delphi. Jest do baza danych oparta ma MSSQL.
I czasami klienci zgłaszają mi problem, że po uruchomieniu mojego programu on nie pokazuje się tylko wisi w procesach.
Wtedy zawsze przyczyną jest jakiś inny już działający proces. Trzeba go zamknąć i natychmiast pojawia się mój program.
Co ciekawe, uruchomienie tego innego procesu już po moim nie powoduje żadnych problemów.

Wiem że ten opis niewiele wam mówi, ale ciekami mnie, dlaczego z innymi programami nie ma takich problemów.
A może są tylko się nie spotkałem?
Może mają jakieś dodatkowe zabezpieczenia?

0

być może, próbujesz zbindować się na porcie który jest trzymany przez tamten program.
albo korzystacie ze wspólnego pliku który otwiera tamten program.

może przy starcie ładujesz tak dużo zasobów, że nie wystarcza ramów. A tamten program zuzywa zużywa ich na tyle dużo, że jego wyłaczenie umozliwia żeby Twój wskoczyl.

może masz modól który zabezpiecza przed uruchomieniem tylko jedej instancji programu i jakims sposobem Twój program odnajduje swó duplikat w tamtym procesie.

0
m_Lesiu napisał(a):

być może, próbujesz zbindować się na porcie który jest trzymany przez tamten program. albo korzystacie ze wspólnego pliku który otwiera tamten program.

Gdyby tak było to uruchomienie obu w programów w odwrotnej kolejności (najpier mój a potem inny) też spowodowałoby ten sam skutek, prawda?

m_Lesiu napisał(a):

może przy starcie ładujesz tak dużo zasobów, że nie wystarcza ramów. A tamten program zuzywa zużywa ich na tyle dużo, że jego wyłączenie umożliwia żeby Twój wskoczył.

To raczej nie bo mój program wcale nie jest duży a ostatnio przyczyną okazał się malutki dodatek do obsługi dodatkowych klawiszy na myszce. A kiedyś przeglądarka Chrome.

m_Lesiu napisał(a):

może masz moduł który zabezpiecza przed uruchomieniem tylko jednej instancji programu i jakimś sposobem Twój program odnajduje swój duplikat w tamtym procesie.

To też nie bo mój program można uruchomić w kilku instancjach, a znalazłem już kilka różnych programów z którymi mój się gryzie.
</quote>

0

Zakładasz hook na coś? Albo symulujesz kliknięcia klawiszy? Skoro problem pojawia się tylko przy starcie programu najpewniej tam tkwi problem, jeśli nie jest łatwo sprawdzić pod debuggerem co jest nie tak to proponuje komentować po kilka linijek z jakiegoś zdarzenia OnCreate formularza, czy podobnych zdarzeń i sprawdzać czy dalej się sypie.
Program można popsuć na miliony sposobów i jedno wiem na pewno problem jest w twoim programie a nie programach innych. Sumując chcesz pomocy zapodaj kod, z którego może się coś uda powiedzieć, jak nie - zostaje wróżka.

0
Pele2 napisał(a):
m_Lesiu napisał(a):

być może, próbujesz zbindować się na porcie który jest trzymany przez tamten program. albo korzystacie ze wspólnego pliku który otwiera tamten program.

Gdyby tak było to uruchomienie obu w programów w odwrotnej kolejności (najpier mój a potem inny) też spowodowałoby ten sam skutek, prawda?

W przypadku portów, może być tak że jeden program ma wpisany port na sztywno i dopóki się nie zbinduje będzie wisiał. A drugi może po nieudanej próbie spróbować zając kolejny. Wtedy jedna kolejność ruszy a druga już nie.

0

A czy ten inny proces przypadkiem nie łączy się z tą samą bazą ?

Objawy sugerują, że ten inny proces trzyma otwartą transakcję na tabeli, którą chce otworzyć Twój program i do czasu zwolnienia locka tak właśnie będzie wisiał.

0

To na pewno nie bo ten inny program nie ma nic wspólnego z moją bazę danych

usuniecie cytowania całego poprzedniego posta - fp

1 użytkowników online, w tym zalogowanych: 0, gości: 1