Linux gcc, slukar programmet resurser?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
adent
Inlägg: 4094
Blev medlem: 27 november 2008, 22:56:23
Ort: Utanför Jönköping
Kontakt:

Re: Linux gcc, slukar programmet resurser?

Inlägg av adent »

Det normala är väl att köra sitt program från/i/genom GDB. Så fort det krashar får du en callstack och annan trevlig information om vad som hänt.

MVH: Mikael
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6888
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Linux gcc, slukar programmet resurser?

Inlägg av Marta »

gdb har inget att säga om programmet i nuvarande skick, men valgrind har... Det slukar lite minne varje gång.
För att se hur det skall seut testade jag det färdiga programmet mousepad med valgrind. Det slukar ännu mera minne... top slukar inget alls. terminaleditorn joe slukar riktigt mycket.

Det här var virrigt värre. Är det ofrånkomligt att ett program oftast slukar en del minne? Vill ju inte spilla tid på att fäkta mot väderkvarnar...
Användarvisningsbild
arvidb
Inlägg: 4537
Blev medlem: 8 maj 2004, 12:56:24
Ort: Stockholm

Re: Linux gcc, slukar programmet resurser?

Inlägg av arvidb »

Det ska om jag minns rätt (såhär flera år efter senaste användning) gå att få valgrind helt nöjt. Inte alltid helt enkelt att lista ut var det går fel dock. Och tyvärr är det nog alldeles för få som analyserar sina program på det här sättet, antagligen därför vissa program läcker som såll, om jag får gissa.
Nerre
Inlägg: 26655
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Linux gcc, slukar programmet resurser?

Inlägg av Nerre »

Jag tror det beror mycket på vad man använder för libbar. Ditt program kanske är bra skrivet men nyttjar dåligt skrivna libbar.
xxargs
Inlägg: 10183
Blev medlem: 23 september 2006, 14:28:27
Ort: Södertälje

Re: Linux gcc, slukar programmet resurser?

Inlägg av xxargs »

Minnesläckor har visat vara så svår/kostsam grej att få bort helt i många tillämpningar att man resignerat och istället dödar/avlutar och startar programmet eller delar av det relativt regelbundet om de är lämpligt avgränsade att en omstart verkligen friger minne (en fork under Unix/linux där underprocesserna kör ett antal events och sedan dör bort och frigör minnen igen) .

Många daemoner i Unix/linux har lite beteendet av att inte vara allt för långlivade, dör av någon orsak eller dödas av sig själv eller avsiktligt av en överordnad process och respawnar. stty är typiskt en process som dödas när en användare loggar ut och en ny process startas och börja lyssna på aktuella porten i beredskap för en ny användare

Många web-servrar jobbar också på det sättet att varje underprocess lever en rätt kort tid och tar ett visst antal anrop och sedan dödas/dödar sig själv och startas upp igen av just anledningen att en process inte skall bli stående med en oavslutad transaktion (även illvillig sådan i ett hackförsök) allt för länge.

När man har sådan strategi så försöker man bygga den så osynligt som möjligt i verkan för brukaren med en rad processer som tex. lyssnar på port 80 parallellt och om det kommer en process till eller försvinner en då och då men alltid minst 7 igång så märks inte en 'kill' av en viss process för driften.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6888
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Linux gcc, slukar programmet resurser?

Inlägg av Marta »

Har hittat och åtgärdat de två största nybörjarmisstagen nu. Det var av systemet allokerat minne som inte blev deallokerat. Importbuffer i samband med clipboard och fillistan som scandir() skapar. Antog (farligt, farligt...) den första var strikt RO och hanterades där den kom ifrån. Den andra blev det missförstånd att det skulle sättas en pekare till en väl tilltagen allokering, men den användes aldrig. Den allokerar ju själv vad som behövs...

Nu är där lite kvar som är svårare att hitta. Deallokerar XCloseDisplay() allting typ fonter och GC's som hör ihop med den xserver-koppling som stängs, och gör det på ett sätt som gör valgrind nöjd?
SvenW
Inlägg: 1116
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Re: Linux gcc, slukar programmet resurser?

Inlägg av SvenW »

Det borde den väl göra. Antingen vid XCloseDisplay() eller processavslut.
Men, sedan tidigare minns jag att t.ex. om man laddade en färgtabell så låg
verkan kvar ända tills omstart av datorn. Men detta var för länge sedan.

Skall man vara säker på att X-servern deallokerar måste man antagligen
debugga X-servern på något sätt. Som sagt jobbigt.

Valgrind blir nöjd så länge den egna programmet/processen är rent.
Xlib kan kanske i vissa fall allokera resurser i det egna programmet, och detta ser man med Valgrind. Men jag tror att minnesläckor behöver inte vara ett jätteproblem sålänge inte programmet körs under lång tid. Dagar och veckor. Det finns massor av bra och mogna program läcker utan att någon märker det!
Skriv svar