[.Net] Zelfs lege console app geeft al outofmemoryexception

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Titusvh
  • Registratie: Juli 2004
  • Laatst online: 09-06 15:26
Om niet bang te zijn mijn 'operationele' windows te vernaggelen wil ik als vers dotnetter mijn 70-536 oefeningen in een virtual machine doen.

Ik gebruik MS Virtual PC 6.0.192.0 met daarop de tot vandaag ge-update windows 7 professional, met daarop MS Visual Studio 2010.
De virtual machine krijgt ruim 3GB RAM en 1GB pagefile.

Bij de eerste oefening - CreateStruct - gaat het al mis. Er bleek een fout in het boek. Gefixt, maar probleem bleef. Ram vergroot tot >3GB. Probleem bleef. Swapfile aangemaakt (vergeten...). probleem bleef.
Toen uit armoe maar een nieuwe console app aangemaakt, en meteen gerunt. En tot mijn verbazing kijg ik zelfs dan een outofmemoryexception.

Nog even van de struct een class gemaakt. Dat helpt ook niet.

Op google krijg ik met allerlei combi';s van zoektermen heel veel hits, maar mijn geval heb ik na lang zoeken nog niet gevonden.

Als laatste heb ik een kale win7 virtual machine gepakt en daar alleen een versgedownloade Visual Studio Express C# op geïnstalleerd.
En je raadt het al: outofmemoryexceptions.

Ik weet het niet meer !!

Acties:
  • 0 Henk 'm!

Anoniem: 34209

laat je struct eens zien dan.

wanneer krijg je die exception ? tijdens het runnen ?


doe je niet steeds in je class je eigenclassen includen ?

[ Voor 26% gewijzigd door Anoniem: 34209 op 19-10-2010 21:27 ]


Acties:
  • 0 Henk 'm!

  • mickvdv
  • Registratie: November 2006
  • Laatst online: 25-06 11:54

mickvdv

mv $homework //dev/null

Klopt het geheugen op je host wel? Misschien eens memtest draaien en kijken wat daar uit komt.

Dit kan natuurlijk ook een bug zijn in Virtual PC, heb je het al met andere virtualisatie software geprobeerd?

Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 22-01-2024

Korben

() => {};

Anoniem: 34209 schreef op dinsdag 19 oktober 2010 @ 21:26:
laat je struct eens zien dan.

wanneer krijg je die exception ? tijdens het runnen ?


doe je niet steeds in je class je eigenclassen includen ?
Sorry, maar reageer dan niet als je weinig nuttigs te melden hebt. Een exception kan alleen maar run-time optreden. En includen doe je met PHP, niet met .NET. Als het build-proces goed gaat (lijkt me wel) dan zou het geen enkel probleem op mogen leveren, en sowieso zou het wel even moeten duren voordat je echt een OutOfMemoryException krijgt.

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Ik denk dat je hier zonder code helemaal niks over kunt zeggen.

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • 0 Henk 'm!

  • Titusvh
  • Registratie: Juli 2004
  • Laatst online: 09-06 15:26
Het ligt dus niet aan de struct.
Ik ben het programma gaan strippen en uiteindelijk op een 'lege' console app terecht gekomen.

Ik kies in VS voor new project - console application en druk dan meteen op run.

Meer kan ik er niet uitslopen... Los daarvan zie ik niet in waarom dit fout zou moeten gaan. Maar ja, is het fout in VS2010, in Win7, in MSVPC of een combinatie...

Ik heb geen andere virtual machine om dit op te proberen, alleen MSVPC.

Inmiddels gebruik ik als workaround voor mijn oefeningen gewoon een forms app. Daar gaat het goed, ook met 'mijn struct'...

[ Voor 6% gewijzigd door Titusvh op 20-10-2010 15:18 ]


Acties:
  • 0 Henk 'm!

  • roy-t
  • Registratie: Oktober 2004
  • Laatst online: 01-07 21:58
CodeCaster schreef op woensdag 20 oktober 2010 @ 09:33:
Ik denk dat je hier zonder code helemaal niks over kunt zeggen.
De grap hier is dat er helemaal geen code is, zelfs een lege console app geeft deze fout volgens de TS.

Probeer het eens even in je niet VM. .Net installeren (staat er al op bij W7) en een programmatje draaien gaat je Windows echt niet vernagelen.

99,99% zeker dat het een VM probleem is.


Edit: ik zou niet verder klooien met een Winforms app, want dit probleem ga je hoe dan ook nog een keer tegen komen op jouw VM. Probleem fixen en daarna kun je weer gerust verder werken.

Ik vraag me trouwens af of het licht aan de thread appartment state, want die is verschillend in Winforms applicaties en console applicaties. Kun je in program.cs, in je console applicatie eens [Stathread()] toevoegen boven je main methode.

[ Voor 31% gewijzigd door roy-t op 20-10-2010 15:57 ]

~ Mijn prog blog!


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 04-07 16:59

Sebazzz

3dp

Installeer VS2010 eens opnieuw ;)

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Kijk, dat ik over het "en meteen gerunt" heen lees is tot daar aan toe, maar dat je dit mist:
Als laatste heb ik een kale win7 virtual machine gepakt en daar alleen een versgedownloade Visual Studio Express C# op geïnstalleerd.
:P

https://oneerlijkewoz.nl
Het ergste moet nog komen / Het leven is een straf / Een uitgestrekte kwelling van de wieg tot aan het graf


Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 04-07 16:59

Sebazzz

3dp

Ja, en daar opnieuw installeren.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

  • Davio
  • Registratie: November 2007
  • Laatst online: 06-01 16:46
Als je zo bang bent om je Windows te vernaggelen met simpele opdrachten uit het handboek, kun je er misschien beter niet aan beginnen. :)

Sowieso kan VS 2010 redelijk geheugenintensief zijn (bij mij altijd wel iig) en dan is het toch beter om het op je gewone PC te zetten, puur voor de snelheid en compatibility.


Nog even iets anders: Kan het er aan liggen dat je 64-bits en 32-bits door elkaar gebruikt? En in mijn BIOS moest ik voor virtualisatie een paar dingen aanzetten, misschien moet jij dat ook...

Acties:
  • 0 Henk 'm!

  • elnaeth
  • Registratie: Januari 2009
  • Laatst online: 31-03 17:19
Niet zo huilen, gewoon op de host-OS draaien :P Doe ik ook gewoon met mijn desktop/laptop, nooit problemen mee, en ik werk er toch echt dagelijks mee op mijn opleiding.

Acties:
  • 0 Henk 'm!

  • Sebazzz
  • Registratie: September 2006
  • Laatst online: 04-07 16:59

Sebazzz

3dp

Gewoon regelmatig backups en kloons van je hoofdschijf maken waar je OS op staat. Maar dat is iets wat iedereen sowieso al hoort te doen.

[Te koop: 3D printers] [Website] Agile tools: [Return: retrospectives] [Pokertime: planning poker]


Acties:
  • 0 Henk 'm!

Anoniem: 34209

Korben schreef op woensdag 20 oktober 2010 @ 06:19:
[...]

Sorry, maar reageer dan niet als je weinig nuttigs te melden hebt. Een exception kan alleen maar run-time optreden. En includen doe je met PHP, niet met .NET. Als het build-proces goed gaat (lijkt me wel) dan zou het geen enkel probleem op mogen leveren, en sowieso zou het wel even moeten duren voordat je echt een OutOfMemoryException krijgt.
je kan includen ook opvatten als

class x
{
byte[] y = new byte[1500000];
x blaat = new x()
}

maar ok als je wilt mierenneuken dan is het idd niet helemaal de goede benaming.

edit

je krijgt dan een StackOverflowException of een OutOfMemoryException.

[ Voor 17% gewijzigd door Anoniem: 34209 op 20-10-2010 19:31 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01-07 14:32
Anoniem: 34209 schreef op woensdag 20 oktober 2010 @ 19:04:
je kan includen ook opvatten als [..]
Ik kan dat met de beste wil niet als "includen" opvatten. (En nee, heap allocaties leiden nooit tot StackOverflowExceptions, mierenneukerige randgevallen daargelaten waarbij het callen van de heap allocater zelf de stack overflowt.)

Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 22-01-2024

Korben

() => {};

Soultaker schreef op woensdag 20 oktober 2010 @ 20:14:
[...]

Ik kan dat met de beste wil niet als "includen" opvatten. (En nee, heap allocaties leiden nooit tot StackOverflowExceptions, mierenneukerige randgevallen daargelaten waarbij het callen van de heap allocater zelf de stack overflowt.)
Het is inderdaad waarschijnlijker dat je een OutOfMemoryException krijgt, maar in het stukje code van linux_freak, waarbij de field initializer een nieuwe instantie van dezelfde class aanmaakt... Ruikt toch als uiteindelijk een StackOverflowException.

Maar dat is geheel off-topic uiteraard, TS zegt dat hij een OutOfMemory krijgt bij een lege console app. Erg vreemd. Maar zoals al eerder gesuggereerd, run die lege console-app eens op je host-OS.

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Acties:
  • 0 Henk 'm!

  • Titusvh
  • Registratie: Juli 2004
  • Laatst online: 09-06 15:26
Sebazzz schreef op woensdag 20 oktober 2010 @ 16:10:
Ja, en daar opnieuw installeren.
Ik heb VS2010 nu twee keer geinstalleerd. Dat lijkt me genoeg...
Tijd om de VS install te vernaggelen heb ik niet gehad. Meteen na install en reboot een lege consoleapp gemaakt. Met het welbekende resultaat.
Davio schreef op woensdag 20 oktober 2010 @ 16:36:
Als je zo bang bent om je Windows te vernaggelen met simpele opdrachten uit het handboek, kun je er misschien beter niet aan beginnen. :)
Ik ben niet bang dat mijn fantastische oefenapps mijn windows vernaggelen. Maar dat de VS installatie mijn windows vernaggelt of teveel vervuilt. Ik vind herinstallaties zonde van de tijd. Duurt toch altijd langer dan je denkt. Bovendien kan ik mijn VM ook lekker 'meenemen' als ik er op de laptop of elders mee wil werken.
Nog even iets anders: Kan het er aan liggen dat je 64-bits en 32-bits door elkaar gebruikt? En in mijn BIOS moest ik voor virtualisatie een paar dingen aanzetten, misschien moet jij dat ook...
Hardware support staat aan.

Ik verwacht niet dat dit het probleem is. Ik heb voorheen voor een cursus een VM met XP en VS2005 gehad, en daar maakte ik ook consoleapps mee zonder problemen.
Sebazzz schreef op woensdag 20 oktober 2010 @ 17:00:
Gewoon regelmatig backups en kloons van je hoofdschijf maken waar je OS op staat. Maar dat is iets wat iedereen sowieso al hoort te doen.
VM gebruiken is normaliter veel minder werk. En kan ik meenemen naar andere machines.
roy-t schreef op woensdag 20 oktober 2010 @ 15:55:
[...]
Probeer het eens even in je niet VM. .Net installeren (staat er al op bij W7) en een programmatje draaien gaat je Windows echt niet vernagelen.

Ik vraag me trouwens af of het licht aan de thread appartment state, want die is verschillend in Winforms applicaties en console applicaties. Kun je in program.cs, in je console applicatie eens [Stathread()] toevoegen boven je main methode.
Draait niet op host, eerst ff dotnet framework updaten.
Dat gedaan en.... Nu werkt het inderdaad. (Win7 Ultimate x64)
Nog even op de virtual machine gekeken en daar lijkt de laatste framework update al geïnstalleerd.

Dus dan lijkt het te liggen aan de VM, of de interactie van VM met win7 en/of VS2010.

[Update:]
Ik sloeg de gegevens van de VM op op een 'shared folder'. Een directory op mijn host, die als virtuele netwerkschijf in de VM beschikbaar komt.
Zet ik de EXE op een lokale VM schijf dan werkt het ook.
Ik heb de rechten op de hostdirectory nog even wijd open gezet, maar dan blijft het probleem. De exception is dus geen rare reactie op een rechtenprobleem lijkt het.

SAMENGEVAT:
Het probleem is opgelost als de executable op een lokale VM schijf wordt gezet.

Acties:
  • 0 Henk 'm!

  • jmzeeman
  • Registratie: April 2007
  • Laatst online: 03-07 08:08
Het draaien van .NET programma's vanaf een netwerkschijf(dat is hoe windows die hosted folders ziet) kan rechten problemen geven (deze rechten hebben niks met de ntfs of share rechten te maken). Standaard hebben deze programma's minder rechten als programma's op je lokale schijven. Hoe dit bij zon simpel programma tot problemen kan leiden en dit een OutOfMemoryException kan veroorzaken is me wel een beetje onduidelijk maar je symptomen wijzen toch echt in deze richting.

Als je toch graag vanaf je gesharede schijf wilt draaien kan je is kijken wat er gebeurt als je in de Microsoft .NET Framework 2.0 Configuration de code group LocalIntranetZone fulltrust geeft. Dit is niet de meest veilige methode, slimmer is het als je een aparte codegroup voor je gedeelde map maakt.

[ Voor 12% gewijzigd door jmzeeman op 21-10-2010 13:56 ]


Acties:
  • 0 Henk 'm!

  • barfieldmv
  • Registratie: Maart 2004
  • Laatst online: 09-06 20:25
Er zijn verschillende rechten architecturen in .Net.

Filesystem en User rechten en de .Net runtime rechten.

Network shares zijn 'afkomstig van internet' en zullen dus netzoveel recht hebben als een willekeurige executable online (geen enkele dus). Get gacutil kan je je network share als lokale resource mappen en dan is het probleem weer weg.

Dat hij met een out of memory exception komt is trouwens wel heel erg raar. Waarom trouwens niet gewoon de applicatie draaien in een vm schijf?
Pagina: 1