Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Ist das ein Bug oder nicht?
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 30.01.2008, 15:32    Titel: Ist das ein Bug oder nicht? Antworten mit Zitat

Diese einfache Code bringt das Programm zum Absturz:

Code:
dim as string a
a = "-"
do
    a+=a
    print len(a)
loop

_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 30.01.2008, 15:41    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 30.01.2008, 15:49    Titel: Antworten mit Zitat

Nö ich mein ja nur, weil er ja in QB abgefangen wird (out of string space) zwinkern
_________________
Bis irgendwann... grinsen


Zuletzt bearbeitet von AndT am 30.01.2008, 15:51, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
OneCypher



Anmeldungsdatum: 23.09.2007
Beiträge: 802

BeitragVerfasst am: 30.01.2008, 15:50    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 30.01.2008, 17:02    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
PMedia



Anmeldungsdatum: 14.08.2006
Beiträge: 2847

BeitragVerfasst am: 30.01.2008, 17:48    Titel: Antworten mit Zitat

compiliert mal mit -exx und guckt obs immernoch passiert... kann ich grad nich testen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 30.01.2008, 18:19    Titel: Antworten mit Zitat

joa happy
_________________
Bis irgendwann... grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Christoph



Anmeldungsdatum: 07.04.2006
Beiträge: 108
Wohnort: NRW, Rietberg

BeitragVerfasst am: 30.01.2008, 20:26    Titel: Antworten mit Zitat

Ich schaffe ebenfalls bei 1GB ram

536870912
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4704
Wohnort: ~/

BeitragVerfasst am: 30.01.2008, 20:31    Titel: Antworten mit Zitat

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. happy
_________________
Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 30.01.2008, 23:30    Titel: Antworten mit Zitat

Genau, um den Debug-Modus einzuschalten, muß nur als erste Zeile
Code:
OUT(&O400, &O376)
vorhanden sein vor lachen auf dem Boden rollen
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 31.01.2008, 12:28    Titel: Antworten mit Zitat

@ytwinki: Hä???

Kannst du das mal erläutern?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
croco97



Anmeldungsdatum: 04.11.2005
Beiträge: 260

BeitragVerfasst am: 31.01.2008, 16:26    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 31.01.2008, 18:11    Titel: Antworten mit Zitat

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.. mit den Augen rollen
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 31.01.2008, 18:48    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 31.01.2008, 21:56    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
AndT



Anmeldungsdatum: 02.04.2007
Beiträge: 481

BeitragVerfasst am: 01.02.2008, 21:01    Titel: Antworten mit Zitat

Es ist nur seltsam, das Strings mit bis zu 2GB unterstützt werden und er schafft damit noch nicht einmal einen happy.
_________________
Bis irgendwann... grinsen


Zuletzt bearbeitet von AndT am 01.02.2008, 21:19, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 01.02.2008, 21:18    Titel: Antworten mit Zitat

ytwinky hat Folgendes geschrieben:
Genau, um den Debug-Modus einzuschalten, muß nur als erste Zeile
Code:
OUT(&O400, &O376)
vorhanden sein vor lachen auf dem Boden rollen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 02.02.2008, 21:09    Titel: Antworten mit Zitat

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) happy
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Cherry



Anmeldungsdatum: 20.06.2007
Beiträge: 249

BeitragVerfasst am: 03.02.2008, 18:42    Titel: Antworten mit Zitat

könntest du BITTE mal deutlich werden und preisgeben, was dieser Befehl jetzt wirklich bewirkt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 03.02.2008, 18:50    Titel: Antworten mit Zitat

Das KANN man durch Ausprobieren selbst herausfinden. Muss man aber nicht. zwinkern Ist auch die Frage, ob das gut ist... zwinkern
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz