Schrift
[thread]7933[/thread]

Out of memory during request...: Fellermeldung überspringen

Leser: 1


<< >> 10 Einträge, 1 Seite
polkana
 2006-04-30 23:34
#65420 #65420
User since
2004-06-18
74 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo!
hab gerade ein Problem: Wenn Script fresst all Speicher, Perl sagt so was wie
Code: (dl )
Out of memory during request for 1012 bytes, total sbrk() is 536741888 bytes!

und weiter macht nichts...

Wie könnte man es überspringen, so, dass Script bis Ende kam ?


Danke!\n\n

<!--EDIT|polkana|1146425864-->
murphy
 2006-05-01 02:52
#65421 #65421
User since
2004-07-19
1776 Artikel
HausmeisterIn
[Homepage]
user image
Diese Fehlermeldung heißt wohl, dass der Kernel dem Programm einfach keinen weiteren Speicher allozieren kann oder will.

Ich glaube kaum, dass man an der Stelle noch irgendwie sinnvoll mit Perl weiterarbeiten könnte. Selbst wenn es möglich wäre, den Fehler abzufangen, was wohl ohnehin nicht der Fall ist, so könnte man ja keinerlei neue Datenstrukturen mehr anlegen, solange kein Speicher freigegeben wird.
When C++ is your hammer, every problem looks like your thumb.
ptk
 2006-05-03 01:27
#65422 #65422
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Out-of-memory requests kann man sich sehr leicht basteln:
Code: (dl )
1
2
$ perl5.8.8 -e '$x=\1;$#bla=$x'
Out of memory during "large" request for 1073745920 bytes, total sbrk() is 100352 bytes at -e line 1.
esskar
 2006-05-03 01:50
#65423 #65423
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
unter windows passiert da garnix.
ptk
 2006-05-03 03:28
#65424 #65424
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=esskar,02.05.2006, 23:50]unter windows passiert da garnix.[/quote]
Das hängt davon ab, an welcher Adresse sich $x befindet. Wenn es eine eher niedrige Adresse ist und du so viel virtuellen Speicher zur Verfügung hast, dann wird Perl soviel Speicher für das Array tatsächlich reservieren.
Code: (dl )
1
2
$ perl5.8.8 -e '$x=\1; warn $x+0'
135388608 at -e line 1.
betterworld
 2006-05-03 04:26
#65425 #65425
User since
2003-08-21
2613 Artikel
ModeratorIn

user image
[quote=ptk,02.05.2006, 23:27]Out-of-memory requests kann man sich sehr leicht basteln:
Code: (dl )
1
2
$ perl5.8.8 -e '$x=\1;$#bla=$x'
Out of memory during "large" request for 1073745920 bytes, total sbrk() is 100352 bytes at -e line 1.
[/quote]
Warum denn so umständlich?
Code: (dl )
1
2
$ perl -e '$#_=2**30'
Out of memory during array extend at -e line 1.
\n\n

<!--EDIT|betterworld|1146616106-->
esskar
 2006-05-03 09:11
#65426 #65426
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=ptk,03.05.2006, 01:28][quote=esskar,02.05.2006, 23:50]unter windows passiert da garnix.[/quote]
Das hängt davon ab, an welcher Adresse sich $x befindet. Wenn es eine eher niedrige Adresse ist und du so viel virtuellen Speicher zur Verfügung hast, dann wird Perl soviel Speicher für das Array tatsächlich reservieren.
Code: (dl )
1
2
$ perl5.8.8 -e '$x=\1; warn $x+0'
135388608 at -e line 1.
[/quote]
2250728 at -e line 1.
esskar
 2006-05-03 09:12
#65427 #65427
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
[quote=betterworld,03.05.2006, 02:26]
Code: (dl )
1
2
$ perl -e '$#_=2**30'
Out of memory during array extend at -e line 1.
[/quote]
schon besser! :)
ptk
 2006-05-03 09:36
#65428 #65428
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
[quote=betterworld,03.05.2006, 02:26][quote=ptk,02.05.2006, 23:27]Out-of-memory requests kann man sich sehr leicht basteln:
Code: (dl )
1
2
$ perl5.8.8 -e '$x=\1;$#bla=$x'
Out of memory during "large" request for 1073745920 bytes, total sbrk() is 100352 bytes at -e line 1.
[/quote]
Warum denn so umständlich?[/quote]
Ich wollte eigentlich nur zeigen, wie leicht man einen Speicherüberlauf erzeugen kann. Einfach aus Versehen eine Referenz und nicht ihren Wert als Arrayindex verwenden, schon ist es passiert.
Strat
 2006-05-03 21:09
#65429 #65429
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
man kann bei der compilation von moderneren Perl's angeben, ob man sich noch eine Art Reserverspeicher bei Out-of-Memory bereithalten will. Ich habe damit aber noch nicht herumgespielt.
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
<< >> 10 Einträge, 1 Seite



View all threads created 2006-04-30 23:34.