Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 30.01.2008, 15:32 Titel: Ist das ein Bug oder nicht? |
|
|
Diese einfache Code bringt das Programm zum Absturz:
Code: | dim as string a
a = "-"
do
a+=a
print len(a)
loop |
_________________ Bis irgendwann...  |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 30.01.2008, 15:41 Titel: |
|
|
hahaha ich erzeug dir auch mal n unendlich langen string und schau ob du abstürzt.. soll das n witz sein? oO _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 30.01.2008, 15:49 Titel: |
|
|
Nö ich mein ja nur, weil er ja in QB abgefangen wird (out of string space)  _________________ Bis irgendwann... 
Zuletzt bearbeitet von AndT am 30.01.2008, 15:51, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
OneCypher
Anmeldungsdatum: 23.09.2007 Beiträge: 802
|
Verfasst am: 30.01.2008, 15:50 Titel: |
|
|
Bei mir kommt er bis zu einer Stringlänge von 536870912byte
was dann durch 1048576 geteilt genau 512MByte ausmacht..
Ist es tatsächlich ein Fehler wenn ein Programm einen String mit der Größe von 512MB nicht mehr verarbeiten kann?
hmm... theoretisch bestimmt. Praktisch weiss ich nicht wie oft das vorkommt.. also, dass ein String über 512MB anwächst...
Wäre ganz interessant zu erfahren wie weit das programm bei den anderen hier im forum kommt bevor es abstürzt. Wie gesagt, bei mir erreicht er 536870912
Ach übrigends.. ich hab hier einen 1GByte arbeitsspeicher.. kann natürlich gut sein das er bei dem versuch die 512MByte zu verdoppeln keinen Speicherplatz mehr übrig hat und deswegen abstürzt.. wäre jedenfalls mal eine relativ einfache erklärung.. |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 30.01.2008, 17:02 Titel: |
|
|
mal abgesehen davon, dass qb ein interpreter ist und freebasic selbständig laufende programme erstellt und deshalb nicht die fehler davon abfängt, freebasic selber ist ja nicht mehr "dabei" wenn das programm läuft. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
PMedia
Anmeldungsdatum: 14.08.2006 Beiträge: 2847
|
Verfasst am: 30.01.2008, 17:48 Titel: |
|
|
compiliert mal mit -exx und guckt obs immernoch passiert... kann ich grad nich testen |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 30.01.2008, 18:19 Titel: |
|
|
joa  _________________ Bis irgendwann...  |
|
Nach oben |
|
 |
Christoph
Anmeldungsdatum: 07.04.2006 Beiträge: 108 Wohnort: NRW, Rietberg
|
Verfasst am: 30.01.2008, 20:26 Titel: |
|
|
Ich schaffe ebenfalls bei 1GB ram
536870912 |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4704 Wohnort: ~/
|
Verfasst am: 30.01.2008, 20:31 Titel: |
|
|
Wenn du den Code in einem Programm verwendest, ohne den Fehler abzufangen, dann ist es tatsächlich ein Bug - allerdings einer im Programm und nicht in FreeBASIC.  _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 30.01.2008, 23:30 Titel: |
|
|
Genau, um den Debug-Modus einzuschalten, muß nur als erste Zeilevorhanden sein  _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 31.01.2008, 12:28 Titel: |
|
|
@ytwinki: Hä???
Kannst du das mal erläutern? |
|
Nach oben |
|
 |
croco97

Anmeldungsdatum: 04.11.2005 Beiträge: 260
|
Verfasst am: 31.01.2008, 16:26 Titel: |
|
|
MisterD hat Folgendes geschrieben: | hahaha ich erzeug dir auch mal n unendlich langen string und schau ob du abstürzt.. soll das n witz sein? oO |
Die Frage ist gar nicht so blöd. Es ist keine Selbstverständlichkeit, dass moderne Multitaskingsysteme wie UNIX und Win-NT-Linie Heap-Overflows nicht abfangen. Ich habe das mal mit einem Informatiker diskutiert. Es ist nicht so, dass sie das prinzipiell nicht könnten. Sie müssten nur einen freien Minimal-Heap festlegen, ab dem eine System-Fehlermeldung das Programm stoppt. Warum wird das nicht gemacht? Vermutlich deshalb, weil es dem Anwender nichts bringt: Das Programm ist ja dadurch auch nicht gerettet und ein modernes OS wird durch Heap-Overflows ohnehin nicht bedroht. Task-Manager, Job killen und das war's.
Grüsse!
Croco |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 31.01.2008, 18:11 Titel: |
|
|
job killt sich von alleine wenn du auf ok geklickt hast (sollte sowas jemals implementiert werden) aber wie du bereits gesagt hast, retten lässt sich das prog eh nicht mehr, von daher bringts halt nix.. ich finds dennoch witztig, dass sich jemand fragt ob das ein bug ist wenn ein programm abstürzt das theoretisch einen unendlich langen string erzeugt..  _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 31.01.2008, 18:48 Titel: |
|
|
Cherry hat Folgendes geschrieben: | Kannst du das mal erläutern? | Wasn, soll ich die oktalen Konstanten in Hexadezimale oder Binäre umwandeln?
Oder auch nur in Dezimale?
Oder Out, dafür gibts die Referenz..
Wenn du diese Zeile in dein Programm als erste Zeile einfügst, weißt du nach dem Aufruf des Programmes ganz genau, wo der Fehler liegt.. _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 31.01.2008, 21:56 Titel: |
|
|
Vermutlich wird der Prozess noch zuerst versuchen, Swapspace anzufordern (=viel Festplattenaktivität!), bis Windows mit einem "Nicht genügend virtueller Speicher" reagiert.
Übrigens hatte ich kürzlich einmal Acrobat Reader unter Linux erlebt: Hatte irgend ein Memory Leak-Bug drin, auf alle Fälle konsumierte mir dieser Prozess bis am nächsten Morgen praktisch den gesamten virtuellen Speicher weg. => Als Folge konnte auf dem System kaum mehr gearbeitet werden. Hatte es aber mit etwas Geschick mit "ps" und "kill" auf der Textkonsole dann doch noch geschafft, diesen Speicherfresser zu identifizieren und beenden. Anschliessend hörte man bei jedem Prozess die Disk eine Weile lang rattern, weil das Betriebssystem jeden übrigen Prozess wegen diesem Speicherfresser praktisch vollständig ausgelagert hatte! _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
AndT
Anmeldungsdatum: 02.04.2007 Beiträge: 481
|
Verfasst am: 01.02.2008, 21:01 Titel: |
|
|
Es ist nur seltsam, das Strings mit bis zu 2GB unterstützt werden und er schafft damit noch nicht einmal einen . _________________ Bis irgendwann... 
Zuletzt bearbeitet von AndT am 01.02.2008, 21:19, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
Michael Frey

Anmeldungsdatum: 18.12.2004 Beiträge: 2577 Wohnort: Schweiz
|
Verfasst am: 01.02.2008, 21:18 Titel: |
|
|
ytwinky hat Folgendes geschrieben: | Genau, um den Debug-Modus einzuschalten, muß nur als erste Zeilevorhanden sein  |
ytwinky hat Folgendes geschrieben: | Cherry hat Folgendes geschrieben: | Kannst du das mal erläutern? | Wasn, soll ich die oktalen Konstanten in Hexadezimale oder Binäre umwandeln?
Oder auch nur in Dezimale?
Oder Out, dafür gibts die Referenz..
Wenn du diese Zeile in dein Programm als erste Zeile einfügst, weißt du nach dem Aufruf des Programmes ganz genau, wo der Fehler liegt.. |
Der Code ist wirklich nicht verständlich, es ist nicht Ersichtlich woher du die Adresse her hast.
(Das Verstehen des Befehls oder das Umrechnen der Konstanten bringt ja nichts, wenn man nicht weiss, was du wohin schrebst.)
Hast du ein FB Programm deasembliert um an die Adresse zu kommen oder wie kamst du genau auf diese Adresse? _________________ http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight |
|
Nach oben |
|
 |
ytwinky

Anmeldungsdatum: 28.05.2005 Beiträge: 2624 Wohnort: Machteburch
|
Verfasst am: 02.02.2008, 21:09 Titel: |
|
|
Es gibt keine Quelle zu diesem Befehl..
(wenn man mal von dem Gekicher derjenigen absieht, die diesen Befehl vorschlagen)
Leider gibt es auch keine Erfahrungsberichte derjenigen, die diesen Befehl ausgeführt haben..
(mglw. war/ist es ihnen zu peinlich, das auch noch zuzugeben)  _________________
v1ctor hat Folgendes geschrieben: | Yeah, i like INPUT$(n) as much as PRINT USING.. | ..also ungefähr so, wie ich GOTO.. |
|
Nach oben |
|
 |
Cherry
Anmeldungsdatum: 20.06.2007 Beiträge: 249
|
Verfasst am: 03.02.2008, 18:42 Titel: |
|
|
könntest du BITTE mal deutlich werden und preisgeben, was dieser Befehl jetzt wirklich bewirkt? |
|
Nach oben |
|
 |
Sebastian Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 5969 Wohnort: Deutschland
|
|
Nach oben |
|
 |
|