[ vortex77 @ 23.11.2007. 09:59 ] @
Da li je neko imao prilike da se stretne (radi) sa open source UTF8VCL datotekama?

Njihova svrha jeste da omoguce unicode rad sa svim non unicode komponentama u Delphi-ju.
Sve radi super, ako se izuzme OGROMAN memory leak!!!
Naime, dok aplikacija radi pratim Mem Usage na Windows Task Menager-u i aplikacija koja bi inace trebala da koristi max. 15mb naraste cak i do 250mb!!!!
Ono sto sam primetio jeste da mem usage raste i na pomeraj misa, rebacivanje na druge aplikacije.....

Probao sam da ovaj leak pronadjem sam, ali sam se izgubio u kodu i nemam pojma kako dalje.

Da li neko zna kako i sta bi moglo da se odradi i ukloni ovaj bug, posto bih UTF8VCL preporucio svima kojima trebaju nasa slova u programu.
[ vortex77 @ 23.11.2007. 10:08 ] @
Kao pomoc, upload-ovao sam fajlove sa kojima radim na rapidshare :

Code:

http://rapidshare.com/files/71672978/utf8vcl.rar
[ lan-mi @ 23.11.2007. 10:14 ] @
Ako si u programu koristio akcije, prekontrolisi sta si stavio na _imeakcije_Update. Ja se jednom ubih od trazenja a greska je bila tu(ne secam se tacno vec kakav bug je bio).
[ vortex77 @ 23.11.2007. 10:19 ] @
Ne...test aplikaciju koju sam napravio nema nista sem list boxa i totalno je bez eventa!
Nagomilavanje mem usage-a se desava bez obzira sta radim na aplikaciji - CAK I KADA SAMO POMERAM MISA!!!
[ lan-mi @ 23.11.2007. 10:43 ] @
Probao sam. Curi samo zvoni. Pri zatvaranju aplikacije ja dobijam gresku: "Invalid floating point operation".
[ savkic @ 23.11.2007. 13:34 ] @
> Da li neko zna kako i sta bi moglo da se odradi i ukloni ovaj bug, posto bih UTF8VCL preporucio svima kojima trebaju nasa slova u programu.

Uzmi neki profiler ili memchek program, FastMM verovatno može da ti završi posao. A u pogledu naših slova mislim da su full unicode komponente bolja varijanta, Tnt ili ElPack.
[ vortex77 @ 23.11.2007. 13:50 ] @
To sam i odradio. Problem definitivno nije u ShareMem-u jer sam njega prvog zamenio. Takodje sam koristio i memcheck i MemoryValidator, ali nisam uspeo da pronadjem nikakve validne tragove koje bi mi pomogle da problem resim. Svakako, moje programerska iskustva u ovome su donekle ogranicena i moguce je da jednostavno ne znam da protumacim rezultate, ali to i jeste raznog zasto sam postavio ovu temu.... :(

Sto se tice moje preporuke, Tnt komponente su sada vlasnistvo TMS-a, pa kao i za ElPack, morate platiti, dok su ove biblioteke dostupne svima.

U svakom slucaju, koristilo bi mi ako neko moze da pogleda ove fajlove (ima ih samo 4 :) )...

Svakako, hvala na dosadasnjim sugestijama.
[ savkic @ 23.11.2007. 14:56 ] @
> To sam i odradio. Problem definitivno nije u ShareMem-u jer sam njega prvog zamenio. Takodje sam koristio i memcheck i MemoryValidator, ali nisam
> uspeo da pronadjem nikakve validne tragove koje bi mi pomogle da problem resim.

Da li si koristio FastMM? Trebaće ti možda malo vremena da ga podesiš ali sa njim sasvim sigurno možeš otkriti mem leak. Takođe pogledaj u TaskManageru da li raste broj GDI objekata, moguće je da se alociraju neki windows objekti koji se ne oslobađaju.

> Sto se tice moje preporuke, Tnt komponente su sada vlasnistvo TMS-a, pa kao i za ElPack, morate platiti, dok su ove biblioteke dostupne svima.

Može se i dalje naći poslednja besplatna verzija TNT kontrola, a ElPack ima freeware komponente koje su donekle ograničene.

> U svakom slucaju, koristilo bi mi ako neko moze da pogleda ove fajlove (ima ih samo 4 :) )...

Sada nemam vremena, možda za neki dan, da li si kontaktirao proizvođače tih klasa, pogledaj da li su i drugi prijavili te probleme, možda rešenje već postoji.

[ vortex77 @ 25.11.2007. 14:50 ] @
Fajlove sam skinuo sa Source Forge-a i tamo su takodje konstatovali ovaj problem, ali na zalost bez resenja.
Pokusao sam i da kontaktiram admina za ovaj projekat, ali takodje bezuspesno.

Radio sam i sa FastMM-om i MemCheck-om zadnja 2 dana, ali rezultati provere su bez ikakvog smisla. Znam da deluje lenjo sto trazim pomoc u pronalazenju ovog bug-a, ali vec deset dana pokusavam da razresim ovaj problem i nisam nista blizi resenju nego kada sam poceo :((
[ Milan Milosevic @ 25.11.2007. 16:29 ] @
Prijatelju probaj da stavis Breakpoint na svaku proceduru koja imas po unitima .
tako ces da detektujes koje se koriste procedure i kad nista ne koristis direktno.
Onda vidi dali se u svakom konkretnom slucaju kada curi memorija javlja ista procedura.
Ili probaj sa nekim programom za reverzovanje recimo OllyDBG ili slicno da bi pratio applikaciju tokom izvrsenja mada i sam Delphi ima tu mogucnost.
Ili prati upotrebu procedura za uzimanje i oslobadanje memorije.
[ vortex77 @ 25.11.2007. 16:42 ] @
To sam i radio. Samo ima jedan problem : Nema pravila kada se pojavljuje leak - iste procedure se vrte i neki put se memorija trosi neki put ne. Gledao sam i sta i pod kojim uslovima poziva ove procedure. Jednostavno nisam uocio nikakve pravilnosti. Takodje mislim da je vise tredova podignuto, tako da se step by step debug tesko koristi.
[ savkic @ 25.11.2007. 17:02 ] @
> Radio sam i sa FastMM-om i MemCheck-om zadnja 2 dana, ali rezultati provere su bez ikakvog smisla. Znam da deluje lenjo sto trazim pomoc u
> pronalazenju ovog bug-a, ali vec deset dana pokusavam da razresim ovaj problem i nisam nista blizi resenju nego kada sam poceo :((

Problem je u MakeWndProcIntercept, za svaku poruku se alocira memorija koja se nikada ne oslobadja. Da bi se našlo tačno rešenje moralo bi da se uđe u duboko u kod i sistem rada što zahteva mnogo posla. Jednostavno rešenje je da pronađeš krajnje funkcije iz kojih se poziva MakeWndProcIntercept i da na kraj staviš VirtualFree(AlociraniPointer, 0, MEM_RELEASE);

Trenutno poboljšanje možeš videti ako na kraj CallWindowProcAIntercept staviš VirtualFree(Proc, 0, MEM_RELEASE); Ima još takvih mesta i vodi računa. ne treba uvek oslobađati memoriju jer se u nekim slučajevima ne poziva MakeWndProcIntercept.

[Ovu poruku je menjao savkic dana 25.11.2007. u 21:03 GMT+1]
[ Milan Milosevic @ 25.11.2007. 18:30 ] @
Mozda da probas mada nije najsrecnije resenje da cuvas neka znacajna podesavanja u mem ili fajlu i da povremeno unistavas objekat i ponovo ga kreiras i setujes podesavanja.

Da debagovanje aplikacija nikad nije lako narocito ako je ti nisi ni pravio, a ima puno koda.
[ vortex77 @ 26.11.2007. 08:21 ] @
Savkic, CARE!!!

Odradio sam sve sto si mi napisao i problem je (bar za sada :)) ) resen.

Hvala!!!