Pozdrav ljudi.
Nadam se da nisam promašio forum gde postavljam ovu temu, ali ako jesam, izvinjavam se unapred i molim moderatore da je premeste gde misle da treba da bude.
Radi se o jednom, sad već, malo starijem Lenovo serveru na kome je instaliran licencirani Windows 7. Baš mora da bude Windows 7 zbog, isto licenciranog, programa koji mora da se na njemu pokreće tako da nemojte da mi predlažete da pređem na neki drugi OS jer mi to apsolutno nije rešenje.
Taj glavni program mora stalno da bude pokrenut na serveru ali ima jednu grešku koju sada više nema ko da reši jer se softwer više ne razvija. Ja trenutno nemam alternativni program koji radi isti posao a šta tačno radi program ne mogu da napišem ali nije ni bitno.
Ovo je ukratno a za one znatiželjne detalje ću napisati na kraju ispod linije.
Naime, kada program koji radi na serveru dođe u stanje greške on otvori jedan prozorčić na kome piše da je došlo do nepredviđene greške i tada veoma bitna obrada podataka staje a da bi se nastavilo dalje korisnik mora da klikne na OK dugme na tom prozorčiću. Ali, pošto je ovo server i to bez monitora, nema ko da klikne to OK dugme.
Ja se s vremena na vreme konektujem na server preko Remote Desktop konekcije i kliknem OK ali to nije rešenje. Ja se nekad po više dana ne konektujem na server a očekujem da on radi bez zastoja.
Našao sam neku staru free verziju jednog malog ali veoma moćnog programa "PTFB" (Press the freaking button) koji je idealan za ovu namenu. On ima mogućnost da nauči o kom prozoru i o kom dugmetu je reč i da čeka u pozadini da se pojavi taj prozor sa tim dugmetom i on će ga, čim se pojavi, kliknuti.
E sad vi sigurno mislite "Pa eto, imaš rešenje, šta hoćeš od nas?"... eeee pa da je to tako ne bih ja sada ni pisao ovaj dugačak post.
Radi se o tome da kada se ja diskonektujem sa RDP-a na serveru nema više ko da gleda sadržaj ekrana, Windows user je izlogovan, nema prikačenog monitora... sve u svemu Windows više ne renderuje GUI elemente, tj. prozore i dugmiće pa ovaj mali programčić "PTFB" nema šta da klikne. Prosto, veoma bitna obrada podataka se zaustavlja i nastaje užasan problem pa ja moram, bez obzira koji je deo dana, da se kačim na server i rešim problem manuelno.
Ono što ja vidim kao potencijalno teorijsko rešenje (koje ne znam kako sprovesti u praksi) jeste, prvo spojiti neki monitor na server ili ga prevariti da ima monitor (da li softverski ili hardverski, svejedno) i naterati Windows da, kada se ja diskonektujem sa RDP sesije da se default User automatski uloguje kao da je to uradio neki korisnik fizički na serveru i da se onda slika prikazuje na taj prikačeni (virtualni) monitor pa će onda i taj mali programčić koji automatski klikće, moći da pronaće prozor sa greškom i da klikne na OK dugme na njemu.
Ne treba razmišljati na temu kako sprečiti da se greška nikako ni ne pojavi. Mislim, to bi bilo idealno, ali to nema šanse da se to sada reši. Ustvari, bilo kakva izmena tog programa sada više ne dolazi u obzir.
Eventualno u obzir može da dođe neki drugi program za automatizaciju Winows radnji pa da probam sa njim, ali čisto sumnjam da će raditi jer nema GUI renderinga.
A, kao što sam i obećao, evo detalja o glavnom programu i grešci. Ne morate ovo sve da čitate da bi mi pomogli. Ovo sam napisao jer znam da će biti radoznalih ljudi koji će pitati za detalje programa i greške.
Dakle, program inače radi bez problema. Čita podatke iz baze i nešto radi sa njima, generiše neke PDF izveštaje i slično. Sve dok, u totalno nasumičnom trenutku, ničim izazvan, ne dođe u stanje neke neobjašnjive greške: Access violation at address 5015605B in module 'rtl190.bpl'. Read of address 00000000.
I dok je razvoj programa bio aktivan, programeri nikako nisu mogli da provale zašto dolazi do te greške jer se kod njih nije dešavala, ali kada do nje dođe, obrada podataka, koja inače nikako ne sme da se zaustavi, u trenutku kada dođe do greške, nažalost, staje i stoji sve dok neko ne klikne na OK dugme na tom prozorčiću i nakon toga zatvoriti program i pokrenuti ga ponovo da bi sve u potpunisti radilo.
Poslednje što su programeri isprogramirali pre nego što su odustali od celog projekta jeste da se program sam resetuje (ugasi aktivna instanca i pokrene nova) na svakih 30 minuta tako da ako slučajno dođe do greške program bi trebalo sam da se ugasiti i startovaće se druga instanca i obrada podataka se nastavlja dalje.
Ovo rešenje lepo funkcioniše ako u tom jednom ciklusu ne dođe do greške. Nakon 30 minuta program se sam zatvara i nakon par sekundi otvara se novi i sam nastavlja sa obradom podataka.
Ali programeri nisu uzeli u obzir činjenicu da kada program dođe do greške pa otvori prozor sa opisom greške i kada istekne tih 30 minuta ta njihova skripta za gašenje programa ne može da zatvori ovaj prozor sa greškom. Ustvari, vizuelno glavni program se zatvori, tj. glavna forma programa nestane sa ekrana, ali njen prozor sa opisom greške ostaje otvoren a to znači da je instanca programa i dalje aktivna u pozadini i troši mi resurse servera, ali ono što je još gore, drži zauzetu jednu licencu kojih imam ograničen broj. Često se desi da za jedan dan bude toliko instanci pokrenutih u pozadini da nema više slobodnih licenci da se pokrene nova instanca programa pa obrada podataka staje...
Ono što moram da naglasim da se program ne sme naglo ugasiti. Ta funkcionalnost automatskog resetovanja programa koju su programeri poslednju isprogramirali radi tako što kada istekne 30 minuta prvo se proveri šta program trenutno radi, ako je u fazi obrade jednog bloka podataka onda se čeka da se ta obrada završi pa pre nego što se počne sa novim blokom podataka tek tada se program sam ugasi. To može da potraje i do 5 minuta ali program će da čeka dok se to ne desi pa će se tek onda sam zatvoriti i pokrenuti novu instancu. Ili će prvo pokrenuti novu instancu pa će ugasiti staru, ali nije ni bitno.
Znači, evo primera: program radi bez problema nekih, recimo 10 minuta, i onda se desi ova neka greška (verovatno neka greška na memorijskoj lokaciji ili tako nešto) i program otvori popup prozorčić na kome piše "Access violation at address 5015605B in module 'rtl190.bpl'. Read of address 00000000" i na tom prozorčiću postoji samo jedno dugme OK. U pozadini se vidi glavna forma programa koja stoji zaleđena, znači ništa ne funkcioniše na njoj. U jednom trenutku nakon 30 minuta program dobije instrukciju da se ugasi. Glavna forma programa nestaje sa ekrana ali ostaje onaj mali prozor za opisom greške i dalje otvoren. Za par sekundi startuje se novi program i sve naizgled radi bez problema. U stvarnosti, meni su u tom trenutku iskorišćene dve lincence programa a imam ih ukupno, recimo, 5. Kapirate da će može relativno brzo da dođe do toga da se svih 5 lincenci iskoristi.
Nadam se da nisam promašio forum gde postavljam ovu temu, ali ako jesam, izvinjavam se unapred i molim moderatore da je premeste gde misle da treba da bude.
Radi se o jednom, sad već, malo starijem Lenovo serveru na kome je instaliran licencirani Windows 7. Baš mora da bude Windows 7 zbog, isto licenciranog, programa koji mora da se na njemu pokreće tako da nemojte da mi predlažete da pređem na neki drugi OS jer mi to apsolutno nije rešenje.
Taj glavni program mora stalno da bude pokrenut na serveru ali ima jednu grešku koju sada više nema ko da reši jer se softwer više ne razvija. Ja trenutno nemam alternativni program koji radi isti posao a šta tačno radi program ne mogu da napišem ali nije ni bitno.
Ovo je ukratno a za one znatiželjne detalje ću napisati na kraju ispod linije.
Naime, kada program koji radi na serveru dođe u stanje greške on otvori jedan prozorčić na kome piše da je došlo do nepredviđene greške i tada veoma bitna obrada podataka staje a da bi se nastavilo dalje korisnik mora da klikne na OK dugme na tom prozorčiću. Ali, pošto je ovo server i to bez monitora, nema ko da klikne to OK dugme.
Ja se s vremena na vreme konektujem na server preko Remote Desktop konekcije i kliknem OK ali to nije rešenje. Ja se nekad po više dana ne konektujem na server a očekujem da on radi bez zastoja.
Našao sam neku staru free verziju jednog malog ali veoma moćnog programa "PTFB" (Press the freaking button) koji je idealan za ovu namenu. On ima mogućnost da nauči o kom prozoru i o kom dugmetu je reč i da čeka u pozadini da se pojavi taj prozor sa tim dugmetom i on će ga, čim se pojavi, kliknuti.
E sad vi sigurno mislite "Pa eto, imaš rešenje, šta hoćeš od nas?"... eeee pa da je to tako ne bih ja sada ni pisao ovaj dugačak post.
Radi se o tome da kada se ja diskonektujem sa RDP-a na serveru nema više ko da gleda sadržaj ekrana, Windows user je izlogovan, nema prikačenog monitora... sve u svemu Windows više ne renderuje GUI elemente, tj. prozore i dugmiće pa ovaj mali programčić "PTFB" nema šta da klikne. Prosto, veoma bitna obrada podataka se zaustavlja i nastaje užasan problem pa ja moram, bez obzira koji je deo dana, da se kačim na server i rešim problem manuelno.
Ono što ja vidim kao potencijalno teorijsko rešenje (koje ne znam kako sprovesti u praksi) jeste, prvo spojiti neki monitor na server ili ga prevariti da ima monitor (da li softverski ili hardverski, svejedno) i naterati Windows da, kada se ja diskonektujem sa RDP sesije da se default User automatski uloguje kao da je to uradio neki korisnik fizički na serveru i da se onda slika prikazuje na taj prikačeni (virtualni) monitor pa će onda i taj mali programčić koji automatski klikće, moći da pronaće prozor sa greškom i da klikne na OK dugme na njemu.
Ne treba razmišljati na temu kako sprečiti da se greška nikako ni ne pojavi. Mislim, to bi bilo idealno, ali to nema šanse da se to sada reši. Ustvari, bilo kakva izmena tog programa sada više ne dolazi u obzir.
Eventualno u obzir može da dođe neki drugi program za automatizaciju Winows radnji pa da probam sa njim, ali čisto sumnjam da će raditi jer nema GUI renderinga.
A, kao što sam i obećao, evo detalja o glavnom programu i grešci. Ne morate ovo sve da čitate da bi mi pomogli. Ovo sam napisao jer znam da će biti radoznalih ljudi koji će pitati za detalje programa i greške.
Dakle, program inače radi bez problema. Čita podatke iz baze i nešto radi sa njima, generiše neke PDF izveštaje i slično. Sve dok, u totalno nasumičnom trenutku, ničim izazvan, ne dođe u stanje neke neobjašnjive greške: Access violation at address 5015605B in module 'rtl190.bpl'. Read of address 00000000.
I dok je razvoj programa bio aktivan, programeri nikako nisu mogli da provale zašto dolazi do te greške jer se kod njih nije dešavala, ali kada do nje dođe, obrada podataka, koja inače nikako ne sme da se zaustavi, u trenutku kada dođe do greške, nažalost, staje i stoji sve dok neko ne klikne na OK dugme na tom prozorčiću i nakon toga zatvoriti program i pokrenuti ga ponovo da bi sve u potpunisti radilo.
Poslednje što su programeri isprogramirali pre nego što su odustali od celog projekta jeste da se program sam resetuje (ugasi aktivna instanca i pokrene nova) na svakih 30 minuta tako da ako slučajno dođe do greške program bi trebalo sam da se ugasiti i startovaće se druga instanca i obrada podataka se nastavlja dalje.
Ovo rešenje lepo funkcioniše ako u tom jednom ciklusu ne dođe do greške. Nakon 30 minuta program se sam zatvara i nakon par sekundi otvara se novi i sam nastavlja sa obradom podataka.
Ali programeri nisu uzeli u obzir činjenicu da kada program dođe do greške pa otvori prozor sa opisom greške i kada istekne tih 30 minuta ta njihova skripta za gašenje programa ne može da zatvori ovaj prozor sa greškom. Ustvari, vizuelno glavni program se zatvori, tj. glavna forma programa nestane sa ekrana, ali njen prozor sa opisom greške ostaje otvoren a to znači da je instanca programa i dalje aktivna u pozadini i troši mi resurse servera, ali ono što je još gore, drži zauzetu jednu licencu kojih imam ograničen broj. Često se desi da za jedan dan bude toliko instanci pokrenutih u pozadini da nema više slobodnih licenci da se pokrene nova instanca programa pa obrada podataka staje...
Ono što moram da naglasim da se program ne sme naglo ugasiti. Ta funkcionalnost automatskog resetovanja programa koju su programeri poslednju isprogramirali radi tako što kada istekne 30 minuta prvo se proveri šta program trenutno radi, ako je u fazi obrade jednog bloka podataka onda se čeka da se ta obrada završi pa pre nego što se počne sa novim blokom podataka tek tada se program sam ugasi. To može da potraje i do 5 minuta ali program će da čeka dok se to ne desi pa će se tek onda sam zatvoriti i pokrenuti novu instancu. Ili će prvo pokrenuti novu instancu pa će ugasiti staru, ali nije ni bitno.
Znači, evo primera: program radi bez problema nekih, recimo 10 minuta, i onda se desi ova neka greška (verovatno neka greška na memorijskoj lokaciji ili tako nešto) i program otvori popup prozorčić na kome piše "Access violation at address 5015605B in module 'rtl190.bpl'. Read of address 00000000" i na tom prozorčiću postoji samo jedno dugme OK. U pozadini se vidi glavna forma programa koja stoji zaleđena, znači ništa ne funkcioniše na njoj. U jednom trenutku nakon 30 minuta program dobije instrukciju da se ugasi. Glavna forma programa nestaje sa ekrana ali ostaje onaj mali prozor za opisom greške i dalje otvoren. Za par sekundi startuje se novi program i sve naizgled radi bez problema. U stvarnosti, meni su u tom trenutku iskorišćene dve lincence programa a imam ih ukupno, recimo, 5. Kapirate da će može relativno brzo da dođe do toga da se svih 5 lincenci iskoristi.