Linux gcc, slukar programmet resurser?

C, C++, Pascal, Assembly, Raspberry, Java, Matlab, Python, BASIC, SQL, PHP, etc.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6886
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Linux gcc, slukar programmet resurser?

Inlägg av Marta »

Då och då inträffar magiska fenomen på min Linux-burk, som är igång 24/7. En reboot får sedan allt att fungera igen.
Jag använder ett hemmaskrivet program i gcc hyfsat mycket. Har börjat misstänka ett samband. Hur tar jag reda på att det verkligen släpper alla resurser när processen terminerar?
Användarvisningsbild
Icecap
Inlägg: 26105
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Linux gcc, slukar programmet resurser?

Inlägg av Icecap »

Det gör man vid att avyttra dom när de inte behövs längre - samt vid att lägga in destructors vid programavslut.

Jag antar att resurserna är dynamisk minne och jag brukar göra så att pekarna på tilldelad minne ställs till NULL vid uppstart SAMT EFTER DESTRUKTORN ÄR KÖRT. Då kan ytterligare "släpp" av minnen inte genomföras och man får ett fel man kan ignorera om man vill.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6886
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Linux gcc, slukar programmet resurser?

Inlägg av Marta »

Det här är inte ++, vanlig object free gcc och direkt länkat mot xlib. Den gör XCloseDisplay samt free på allt dynamiskt minne innan terminering, om detta nu görs normalt. Ibland när något är fel så segfaultar den och vad som då sker med minne och x-resurser vet jag för lite om.

Det som skulle behövas är om t.ex gdb har någon finess för att se om allt verkligen är släppt vid normalt avslut. Hade även varit bra att kunna fånga upp en segfault och hantera den lite snyggare.
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 »

Det finns väl debug-vertyg/lib typ eletric fence mfl. som kan fånga upp om programmen börja läcka minne, det är liksom ingen nytt i programmerarvärlden...

https://en.wikipedia.org/wiki/Memory_debugger är väl en ingång när man börja leta program/libb som kan underlätta

I top, atop mfl. monitorer (om du kör linux) kan man se om program börja allokera allt mer minne under körningen, så först är att försöka se vilken program som sväller onaturligt i minnesallokering
Användarvisningsbild
lillahuset
Gått bort
Inlägg: 13969
Blev medlem: 3 juli 2008, 08:13:14
Ort: Norrköping

Re: Linux gcc, slukar programmet resurser?

Inlägg av lillahuset »

Jag tror nog (utan att veta helt säkert) att alla resurser lämnas tillbaks vid programslut. Det kan naturligtvis finnas en bugg i Linux som gör att det inte blir så. Har du frågat på något lämpligt linuxforum?
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 »

Har också svårt att tänka mig att linux skulle misslyckas med detta... - det har liksom varit varumärket för Unix-system i alla åren att klara av sådant till skillnad för windows-baserade system etc. - dvs. användaren kan skita ned för sig själv på sitt lokala konto, men det hotar inte hela systemet - såvida man inte kör som root då eller en kernel-process som inte sköter sig.
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14818
Blev medlem: 16 april 2006, 17:04:10

Re: Linux gcc, slukar programmet resurser?

Inlägg av mrfrenzy »

Vid segfault är det oftast fel på hårdvara eller drivrutiner.

Jag skulle prova att köra det hemmasnickrade programmet på någon annan maskin en vecka för att utesluta det.

Kör du stable-utgåva av någon känd distribution? Har du någon udda hårdvara eller annat som krävt manuell installation?
Mr Andersson
Inlägg: 1394
Blev medlem: 29 januari 2011, 21:06:30
Ort: Lapplandet

Re: Linux gcc, slukar programmet resurser?

Inlägg av Mr Andersson »

> Vid segfault är det oftast fel på hårdvara eller drivrutiner.
Helt fel. Den överlägset vanligaste orsaken till segfaults är programmerarmisstag, t.ex. att försöka använda minne efter free(), felaktiga pekare, etc. Kanske blandar du ihop segfaults (userspace-fel) med kernel panics?

> Hur tar jag reda på att det verkligen släpper alla resurser när processen terminerar?
Det sköter kerneln om. Däremot kan du fortfarande drabbas av minnesfragmentering även om minnet frigörs om du gör många små allokeringar.
T.ex om du över tid allokerar totalt 1GB i små 1 kB-delar. Sen när programmet avslutas (eller kraschar) så frigörs allt minne, men största sammanhängande block kan vara väldigt litet.
Användarvisningsbild
mrfrenzy
Co Admin
Inlägg: 14818
Blev medlem: 16 april 2006, 17:04:10

Re: Linux gcc, slukar programmet resurser?

Inlägg av mrfrenzy »

Tack Mr Andersson.
Jag tänkte helt fel eftersom det lät på första inlägget som hela maskinen stannade och behövde rebootas.

Då ska det ju inte vara något problem att hitta i loggfilerna vilken process som är den skyldige, och sedan gå vidare med debugging av densamma.
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 »

TS: Vad är det för "magiska fenomen" som uppstår? Med en bra buggrapport så är man ju ofta mer än halvvägs till att lösa problemet, så du kanske skulle börja där? ;)
Användarvisningsbild
hawkan
Inlägg: 2585
Blev medlem: 14 augusti 2011, 10:27:40

Re: Linux gcc, slukar programmet resurser?

Inlägg av hawkan »

Mr Andersson har ju rätt. Men man kan väl tänka sej att Xservern skulle kunna samla på sej saker.
Exakt vad det skull vara har jag dock väldigt vaga tankar om.
Användarvisningsbild
Glenn
Inlägg: 33666
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Linux gcc, slukar programmet resurser?

Inlägg av Glenn »

Man kan ju dock råka ut för zombieprocesser (defunct) , men i linux ska väl dessa inte allokera systemresurser (som dom gör i windows)
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 6886
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: Linux gcc, slukar programmet resurser?

Inlägg av Marta »

OS-trubbel tar vi inte i den här gruppen. Det verkar finnas ett tydligt samband med mitt hemmagjorda program, så ett verktyg för att upptäcka om det är trasigt är vad som eftersöks.

Det som inträffar är att datorn helt plötsligt blir jättetrög. Nätverket. trådat till en gammal router med ddwrt, går ibland ner. ifconfig och route -n visar OK. Starta om X gör ingen nytta. Kräver reboot. top visar OK. Finns mycket minne bundet i cache, men det kräver väl hyfsat små block, så det ändå kan vara hyperfragmenterat? Hur kollas detta?

Segfaultarna vet jag berott på en dubbellänkad lista som "gått av". Det hittades med gdb, men där kan ju vara mer kvar... Då vore det bra att kunna fånga upp en segfault, försöka spara till en "crashfil" om det går och avsluta snyggt. try/except är bra i ++, men finns massor av sk*t jag absolut inte vill ha.

Projektet börjar så sakteliga att bli moget, men vill vara drägligt säker på att det är fritt från allvarliga fel innan det är dags att lägga ut det för fri nedladdning någonstans. Skall bli intressant att se vad det blir av det, men kanske redan är crap med den dj**la overhead 64-bit skapar...
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 här är nog rätt knepigt!

Normalt kör man sitt program under Valgrind för att avslöja minnesläckor och uppknutna resurser,
men Valgrind tittar inte i X-servern.
Då skulle man behöva köra X-servern under Valgrind. Att ändra sin uppstartskonfiguration så att detta sker känns jobbigt.

Det finns annars en sida här.
https://www.x.org/wiki/Development/Docu ... Debugging/

Men även detta är gissnigsvis jobbigt, så har du inte myckat goda skäl att strula med det eller tycker att det är roligt och spännade, så blir min rekommendation att hellre försöka leva med problemet.
Tråkigt svar men ärligt! Men det är inte osannolikt att X-servern samlar på sig vid t.ex. XLoadFont .

Var inte rädd all lägga ut programmet, skicka bara med en liten varning!
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 »

Precis, valgrinds memcheck är nog verktyget du efterfrågar. Superbra för att hitta "oåtkomligt" minne (d.v.s. minnesläckor) t.ex. i det egna programmet.

Jag har för övrigt sett ett liknande fenomen på en burk med för lite minne för att bygga openoffice (och ingen swap). Efter misslyckat bygge (vet ej om det var gcc som avslutade p.g.a. Out of memory eller om bygget blev dödat av kärnans OOM-killer) så blev datorn tokseg - t.o.m. muspekaren i X uppdaterades väl 1 gång per sekund eller så. Jag grävde aldrig vidare i problemet tyvärr...
Skriv svar