IsMovie() nicht "bulletproof"?

Anfängerfragen zum Programmieren mit PureBasic.
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

IsMovie() nicht "bulletproof"?

Beitrag von Sven »

Die Hilfe meint dazu: "Überprüft, ob die angegebene #Movie Nummer gültig und ein korrekt initialisiertes Movie ist. Diese Funktion ist "kugelsicher" und kann mit jedem Wert benutzt werden."

Warum gibt mir dann folgender Code ein "Invalid memory access" zurück, wenn ich ihn mit einem ungeeigneten Movie aufrufe?

Code: Alles auswählen

            If IsMovie(gfxmov\mID)
              FreeMovie(gfxmov\mID)  ;Movie freigeben
           EndIf
Das passiert nur, wenn das Movie auf ein Sprite gerendert wird.

Und jetzt kommt bitte nicht mit: Die Movie-Lib ist eh buggy. Dann sollen sie nicht in die Hilfe schreiben: Bulletproof...[/code]
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Beitrag von Fluid Byte »

Oh man wie oft noch ... :freak:

Ausführbaren Quelltext bitte!
Windows 10 Pro, 64-Bit / Outtakes | Derek
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Re: IsMovie() nicht "bulletproof"?

Beitrag von Sven »

Was willst Du in dem Fall mit einem ausführbaren Quelltext? Soll ich gleich noch paar 40 MByte Videos dazupacken?

Es geht hier nicht um einen Fehler im Quelltext. Es geht darum, dass bei IsMovie behauptet wird, es wäre sicher, was aber nicht stimmt.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: IsMovie() nicht "bulletproof"?

Beitrag von Kaeru Gaman »

na, es besteht ja trotzdem die möglichkeit, dass du etwas anderes verzapft hast, wodurch das so auftritt...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Fluid Byte
Beiträge: 3110
Registriert: 27.09.2006 22:06
Wohnort: Berlin, Mitte

Re: IsMovie() nicht "bulletproof"?

Beitrag von Fluid Byte »

Sven hat geschrieben:Was willst Du in dem Fall mit einem ausführbaren Quelltext?
Herausfinden ob das Problem nicht doch, wie in 99.9% der Fälle, wieder vor dem Bildschirm sitzt.
Sven hat geschrieben:Soll ich gleich noch paar 40 MByte Videos dazupacken?
Wenn du es irgendwo hochladen kannst natürlich. Wer weiß was für ein komisches Format es benutzt.
Sven hat geschrieben:Es geht darum, dass bei IsMovie behauptet wird, es wäre sicher, was aber nicht stimmt.
Diese Aussage ist ohne Quelltext, Video und Angabe deiner PB Version nicht haltbar. Um nicht zu sagen Blödsinn.
Ich habe mit IsMovie() in der neusten Beta keine Probleme.

@Moderatoren:

Solange dieser Bug nur eine vage Vermutung ist bitte nach "Anfänger" verschieben.
Windows 10 Pro, 64-Bit / Outtakes | Derek
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: IsMovie() nicht "bulletproof"?

Beitrag von NicTheQuick »

Also ich finde auch, dass bei einer kugelsicheren Funktion kein Invalid Memory Access auftreten soll.

Sowas kann höchstens passieren, wenn man mit ASM am Stack rumpfuscht. Ein komischer Video-Codec darf da keinen Fehler werfen. Das wäre Unsinn.
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Re: IsMovie() nicht "bulletproof"?

Beitrag von Sven »

Leute, der Code ist ganz simpel und steht oben.

Code: Alles auswählen

If IsMovie(gfxmov\mID)
  FreeMovie(gfxmov\mID)  ;Movie freigeben
EndIf
Es wird geprüft, ob das Movie gültig ist, wenn ja, wird es freigegeben. Beim Freigeben tritt ein Invalid Memory auf. Also entweder

IsMovie stellt fest, das Movie ist gültig. Dann sollte FreeMovie kein Problem machen.

IsMovie stellt fest, das Movie ist nicht gültig. Dann wird FreeMovie nicht ausgeführt.

IsMovie an sich sollte auch kein Problem machen, da es ja auf jeden Fall - Movie gültig oder nicht - funktionieren sollte. Komisch halt, dass es nur beim Rendern auf Sprite auftritt.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: IsMovie() nicht "bulletproof"?

Beitrag von cxAlex »

Eventuell korrumpiert ein Stück Code davor den Heap des Programms und der Fehler wird nur zufällig dort geworfen. Bei IMAs kann man das NIE sagen. Drum VOLLSTÄNDIGER Code oder es kann dir niemand helfen. Hättest du schon vorher machen sollen, dann hätten wir eventuell schon eine Lösung.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Sven
Beiträge: 374
Registriert: 23.09.2004 12:01

Re: IsMovie() nicht "bulletproof"?

Beitrag von Sven »

Der Code sind 1300 Zeilen. Ich hab auch nix anderes zu tun.

Ich hab das vor 3 Jahren schonmal im englischen Forum gehabt. Aber egal, finden wir uns damit ab, dass die MovieLib einfach Müll ist.
Benutzeravatar
cxAlex
Beiträge: 2111
Registriert: 26.06.2008 10:42

Re: IsMovie() nicht "bulletproof"?

Beitrag von cxAlex »

Sven hat geschrieben:Der Code sind 1300 Zeilen. Ich hab auch nix anderes zu tun.
Naja, wenn du Hilfe willst...
Sven hat geschrieben: Ich hab das vor 3 Jahren schonmal im englischen Forum gehabt. Aber egal, finden wir uns damit ab, dass die MovieLib einfach Müll ist.
Und in 3 Jahren den Fehler immer noch nicht gefunden? Und dann auf die MovieLib schieben?

Code zippen, uploaden, link posten und ab gehts. Kann ja nicht so schwer sein. Am besten das Movie dazu.

Gruß, Alex
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

Bild

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Antworten