Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pri pozivu dll-a puca na stack overflow, dok inace normalno radi

[es] :: .NET :: Pri pozivu dll-a puca na stack overflow, dok inace normalno radi

[ Pregleda: 1903 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

dejan85

Član broj: 155180
Poruke: 59
*.adsl-4.sezampro.yu.



Profil

icon Pri pozivu dll-a puca na stack overflow, dok inace normalno radi24.01.2009. u 18:54 - pre 185 meseci
Uzeo sam neki C kod pisan za linux, nabildovao ga u .NET(Console application), pa je pucao na stack owerflow, ali kad sam u opcijama stavio velicinu steka na nekih 16mega sve je radilo kako treba. Zatim kreiram mfc dll projekat i napravim dll od istog koda, ucitam dll iz C#-a i pri pozivu funkcije iz dll-a puca na stack owerflow iako sam pri bildovanju dll-a isto stavio 16mega za stack. Ne znam u cemu je problem?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Pri pozivu dll-a puca na stack overflow, dok inace normalno radi24.01.2009. u 19:13 - pre 185 meseci
Pa za pocetak problem je sto ti uopste treba 16mb za stek. Umesto sto krpis flasterima, sto ne bi resio problem overflow-a?
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

dejan85

Član broj: 155180
Poruke: 59
*.adsl-4.sezampro.yu.



Profil

icon Re: Pri pozivu dll-a puca na stack overflow, dok inace normalno radi24.01.2009. u 19:27 - pre 185 meseci
16 mega sam stavio prvo i sve je radilo kako treba, mozda radi i sa 4 to je nebitno, promenicu. Nego problem je sto kad pozovem dll uvek puca (i sa 16).
Citat:
Umesto sto krpis flasterima, sto ne bi resio problem overflow-a?

Ma nekrpim nista, samo sam uzeo tudji kod koji radi to sto treba, i pokusavam da ga pozovem iz C#-a.
 
Odgovor na temu

saigon_from_europe

Član broj: 73547
Poruke: 34
*.ptt.rs.



+1 Profil

icon Re: Pri pozivu dll-a puca na stack overflow, dok inace normalno radi25.01.2009. u 16:24 - pre 185 meseci
mmix kaze da je povecanje steka "krpljenje" jer stek bi trebalo da raste i opada, tako da nikada ni ne dodje do 16MB. Deluje mi da tebi stek "curi", pa kada povecas stek da radi samo zato sto se stek ne prepuni dok program radi.

Proveri C# deklaracije funkcija iz DLL-a koje koristis. Kada pucaju stvari sa stekom kada se koriste C/C++ funkcije iz nenativnog okruzenja to najcesce znaci da deklaracije u jeziku u kojem se DLL koristi nisu iste kao deklaracije u samom DLL-u. To ume da se manifestuje na razlicite nacine.

Najtipicnija greska je sta je kada se pomesa sta je preneto po referenci a sta po vrednosti. Ako to nije, uzmi i napisi na papiru sve konverzije koje imas. Tj. koji tipovi se javlaju u C-u, naspram C#-a, proveri spisak da li je sve ok, i onda gledajuci u papir proveri funkciju po funkciju da li je svako preslikavanje ok. Greske nastaju kada se npr. pomesa long i int (32 u C-u naspram 64 u C#-u) i slicno. Proveri i da li su sve deklaracije u C-u ono sto ocekujes. Npr. long moze da bude i 64 bita u C-u; to nije deo standarda nego implementacije.

Da bih lakse uocio greske ja volim da iskopiram iz .h fajla deklaraciju i da je stavim tacno iznad C# deklaracije da bih mogao lakse da proverim sta radim.

PS To sam uglavnom radio iz VB6 a samo jednom iz C#-a i tada nisam imao problema, ali problem je opsti, nije vezan samo za .net.
 
Odgovor na temu

dejan85

Član broj: 155180
Poruke: 59
*.static.sbb.rs.



Profil

icon Re: Pri pozivu dll-a puca na stack overflow, dok inace normalno radi26.01.2009. u 13:50 - pre 185 meseci
Mozda gresim u nacinu kako povecavam stek. Do sad sam isao na Linker->System i menjam Reserve size: 16000000 i commit size: 160000. Sad sam citao da treba da se ubaci u .def fajl kako STACKSIZE, pa sam i to uradio ali opet puca. Osim toga, ne znam da li onda i u c#-u treba da povecam velicinu steka, jer odatle pozivam program, ili dll "ima poseban stek".

Znam da konverzije prave problem, pazio sam na njih, ali za test sam napravio funkciju koja nema argumente i koja ne vraca nista (podesio sam parametre u funkciji) i napravio praznu c# aplikaciju koja samo poziva jednom tu funkciju iz c koda i tu puca na steck owerflow, a kada tu istu fukciju izvrsim iz c/c++ consolne aplikacije ona se izvrsi. To je ono sto pravi problem, a ne da li je krpljenje ili ne.
 
Odgovor na temu

[es] :: .NET :: Pri pozivu dll-a puca na stack overflow, dok inace normalno radi

[ Pregleda: 1903 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.