[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
 
[an error occurred while processing this directive] [an error occurred while processing this directive]
Skåne Sjælland Linux User Group - http://www.sslug.dk Home   Subscribe   Mail Archive   Forum   Calendar   Search
MhonArc Date: [Date Prev] [Date Index] [Date Next]   Thread: [Date Prev] [Thread Index] [Date Next]   MhonArc
 

Re: [CPROG] Killed?



Thomas Lesvang wrote:
> 
> Hej,
> 
> Jeg har lavet et lille C-program. Det er et client/server program der sender og >modtager en masse data fra brugere på nettet. Det kører uden problemer på min lille >P120, men der er problemer når jeg lægger det op på webserveren, der er placeret i >USA.
> 
> Pludselig stopper programmet, men laver ikke noget coredump. Jeg har før lavet et >lign. program der er bygget op omkring samme netværksdel, der var ingen problemer.
> 
> Til at håndtere SIGPIPE har jeg skrevet følgende:
> 
> myhandler.sa_handler = SIG_IGN;
> myhandler.sa_flags = 0;
> sigemptyset(&myhandler.sa_mask);
> sigaction(SIGPIPE, &myhandler, NULL);
> 
> Det har virket uden problemer før, så jeg tror ikke det er derfor programmet stopper (ville ellers være den mest åbenlyse forklaring). Starter jeg programmet fra promten (telnet) og venter, så skriver den følgende:
> 
> [promt ting]$ ./mitprogram
> Killed
> [promt ting]$
> 
> Altså, mit program bliver Killed, men hvorfor? Kan jeg på en eller anden måde have 
> lavet en fejl der får kernen til at dræbe mit program? Og hvis ja, hvilken fejl? Jeg > roder en del med malloc, kan det være hvis jeg glemmer at bruge free()?

Kører webservereren på en Linux maskine? Linux (som Unix vist generelt)
har det temmelig dårligt med at løbe tør for hukommelse, når man skriver
programmer til Linux gider man som regel ikke checke for NULL efter
malloc, men går bare ud fra at der er hukommelse nok. Jeg husker for
noget siden hvor det blev diskuteret på linux-kernel, og der var en der
lavede nogle patches der, hvis kernen føler sig trængt med hukommelse,
begynder at slå processer ihjel. Hvis din process bruger meget
hukommelse kan det være derfor den må lægge krop til, der var lange
diskussioner omkring hvilke kriterier man skulle bruge for at finde ud
af hvad for en process der skulle dø.

Det virker sandsynligt at man bruger en sådan patchet kerne hvis man
kører en webserver hvor folk kan eksekvere arbitrære CGI scripts. 

Mvh Morten


 
Home   Subscribe   Mail Archive   Index   Calendar   Search

 
 
Questions about the web-pages to <www_admin>. Last modified 2005-08-10, 20:07 CEST [an error occurred while processing this directive]
This page is maintained by [an error occurred while processing this directive]MHonArc [an error occurred while processing this directive] # [an error occurred while processing this directive] *