Linux, Perl, pretizeni systemu

Roman Julius rjulius na seznam.cz
Středa Květen 29 17:19:42 CEST 2002


Prvni varianta opravdu system nezhrouti. Kdyz se dojde nakonec souboru,
pole se dal nezvetsuje. Druha zaplni pamet, pak swap a pak to jde cele
do haje.

Logicky to v poradku neni. Podobnou nekonecnou smycku jsem si moji
chybou v jednom skriptu vytvoril, spatne jsem testoval konec souboru.
A padal mi Linux. Tohle co je tady, je uz jenom vytah z toho skriptu
a zjednoduseni.

Hruza je, ze je to schopne polozit cely system.

rJ


-----Original Message-----
From: Honza Pazdziora [mailto:adelton na fi.muni.cz]
Sent: Wednesday, May 29, 2002 4:50 PM
To: linux na linux.cz
Subject: Re: Linux, Perl, pretizeni systemu


On Wed, 29 May 2002 12:29:29 +0000 (UTC), Roman Julius <rjulius na seznam.cz>
wrote:
>
> Mam dve varianty Perlovskeho skriptu, samozrejme programatorsky
> je tam schvalne nekonecna smycka. Prvni varianta se zacykli, ale
> je v podstate neskodna. U druhe varianty ale na mem systemu dojde
> k totalnimu zaplneni veskere pameti. Pak zasahne kernel, zacne
> shazovat jednotlive procesy, ale bohuzel nezustane jen u tohoto
> procesu. Nakonec si to vynuti restart celeho systemu.
>
> Je to jen muj problem nebo je to chyba obecna?
>
> Linux RH 7.0, kernel 2.2.19, Perl 5.6
>
> 1. varianta
>
> #!/usr/bin/perl
> open(FILE,"xxx");      kratky textovy soubor
> while (TRUE) { push(@line,<FILE>); }
>
> 2. varianta
> #!/usr/bin/perl
> open(FILE,"xxx");
> while (TRUE) {$x=<FILE>; push(@line,$x);}
>
> Vyznate se v tom ?

No, v konecnem dusledku by Vam to melo zaplnit pamet oboje, ne? To
pole @line budete zvetsovat do nekonecna. Rozdil je v tom, ze pri
alokaci te promenne (druha moznost) se ten narust velikosti zrychli.

Cili bych se zeptal: opravdu je ta prvni moznost neskodna a logika
toho celeho je v poradku?

--
------------------------------------------------------------------------
 Honza Pazdziora | adelton na fi.muni.cz | http://www.fi.muni.cz/~adelton/
 .project: Perl, mod_perl, DBI, Oracle, auth. WWW servers, XML/XSL, ...
------------------------------------------------------------------------



Další informace o konferenci Linux