[c++] stack overflow

Pagina: 1
Acties:
  • 174 views sinds 30-01-2008
  • Reageer

  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 15:30
even een echte programmeer issue om aan de wensen te voldoen die in deze topic ter sprake kwamen: gathering.tweakers.net/showtopic/33326

Ik ben afgelopen week bezig geweest aan een van onze apps die in c++ is geschreven. Ik heb fijn zitten coden :) (via ODBC database koppeling ed) en bij mij werkte alles prima. Op het systeem van de persoon die de alle meuk zou testen krijg ik een stack overflow |:(

Als ik een debug versie bouw, of (meer) logging toevoeg om te kijken waar het mis gaat blijft de overflow uit (of, nog veel leuker, lijkt het probleem zich te verplaatsen).

Ik weet dat de meesten mensen zullen (willen) reageren in de trant van "zeker iets fout gedaan met pointers of geheugen allocatie ofzo", maar het grappige is dat in het stuk waar het fout gaat helemaal niets is veranderd aan de code. :?

Leuke details zijn nog dat ik het project van visual studio 5 naar visual studio 6 heb geconverteerd en dat ik sinds kort windows 2000 gebruik ipv NT4.

ga zodirect kijken of het wel werkt als ik het op een NT4 systeem bouw, maar als iemand een goeie tip heeft hoor ik het graag.

thnx


Merijn

A software developer is someone who looks both left and right when crossing a one-way street.

Dé antenne-innovatie voor de korte golf


Verwijderd

Stack overflow krijg je als je in een lokaal gedefinieerd array of object loopt te poeren en dan buiten de boundaries terecht komt.

Als het niet plaatsvindt in debug versie maar wel in releaseversie dan heb je 10 tegen 1 vergeten een variabele te initializen alvorens je ermee aan de slag gaat. Debug versies zetten alle variabelen op 0 en in releasebuilds heb je dat niet.

Verder kun je _ASSERTE() calls toevoegen aan je code, zorg er dan wel voor dat je _DEBUG definieert in je releasebuild.

Ook alle service packs geinstalleerd voor VC++ 6? Klinkt als open deur maar dat is het niet :)

  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 15:30
Stack overflow krijg je als je in een lokaal gedefinieerd array of object loopt te poeren en dan buiten de boundaries terecht komt.
of als je teveel calls doet (te diep in call stack).
Als het niet plaatsvindt in debug versie maar wel in releaseversie dan heb je 10 tegen 1 vergeten een variabele te initializen alvorens je ermee aan de slag gaat. Debug versies zetten alle variabelen op 0 en in releasebuilds heb je dat niet.
eens: maar
1) de code waar het fout gaat is niet gewijzigd, dus had het dan eerder moeten optreden.
2) als ik log regeltjes toevoeg om het probleem punt op te sporen, verplaatst het probleem punt zich, of treed gewoon niet meer op. Een niet geinitialiseerde variabele is een 'statische fout'. Dat gaat gewoon altijd fout.... toch :?
Verder kun je _ASSERTE() calls toevoegen aan je code, zorg er dan wel voor dat je _DEBUG definieert in je releasebuild.
_ASSERTE() heeft toch alleen zin als je een debug versie bouwt.. ?
Ook alle service packs geinstalleerd voor VC++ 6? Klinkt als open deur maar dat is het niet :)
SP 5 geloof ik, dat zit wel goed.


in ieder geval bedankt, en spui alsjeblieft door met ideeen :)

A software developer is someone who looks both left and right when crossing a one-way street.

Dé antenne-innovatie voor de korte golf


  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 15:30
ok, als de app op een NT4 machine bouw, doet ie het als een trein...

ik baal d'r alleen als een stekker van dat ik het niet kan verklaren |:(

weet iemand hoe dit kan, of wat ik aan mijn 2000 installatie moet doen om het 'probleem' te verhelpen .. ?

bvd

Merijn

A software developer is someone who looks both left and right when crossing a one-way street.

Dé antenne-innovatie voor de korte golf


Verwijderd

Als je de stackspace van de executable groter maakt, gaat hij nog plat? (Ik weet niet hoe je dat doet met MSVC, trouwens).

Runaway stacks kun je ook krijgen bij recursieve functies, wanneer je de compiler (te) zwaar laat optimaliseren. Als je hem zonder optimalisatie compileert (een debug-versie), doet hij het dan zonder fouten...

  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 15:30
ik hoor net van diegene die aan het testen is dat de NT4 versie het toch niet goed doet. Zal dus wel een gewone bug zijn |:(

wordt vervolgd zullen we maar zeggen :)

ik laat wel weten hoe het afloopt

in ieder geval bedankt tot zover

A software developer is someone who looks both left and right when crossing a one-way street.

Dé antenne-innovatie voor de korte golf


  • MerijnB
  • Registratie: Oktober 2000
  • Laatst online: 15:30
leuk (not)!

het blijkt in VS 6 te zitten |:(

als ik het project in VS5 bouw werkt het als een tiet!

thnx everyone


Merijn

A software developer is someone who looks both left and right when crossing a one-way street.

Dé antenne-innovatie voor de korte golf

Pagina: 1