Invalid memory access ProcedureReturn/EndProcedure

Hier werden, insbesondere in den Beta-Phasen, Bugmeldungen gepostet. Das offizielle BugForum ist allerdings hier.
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Invalid memory access ProcedureReturn/EndProcedure

Beitrag von Hyper »

Hallo Gefährten,

ich versuche jetzt schon seit über einer Woche, mein Programm, das mit PB 402 sauber funktioniert, mit 420 zu kompilieren. Aber leider hält er immer bei einer Anweisung

Code: Alles auswählen

ProcedureReturn
an mit

Code: Alles auswählen

Invalid memory access (read error at adress ....) 
Ich habe vergeblich versucht, einfachere Beispiele aufzubauen. Das gelingt mir nicht. Durch Änderungen (Weglassen von Teilen) bekomme ich den Abbruch auch bei

Code: Alles auswählen

Endprocedure
Lasse ich den Debugger aus, funktioniert es auch nicht.
Deutsches und englische Forum habe ich mehrfach durchsucht, alles alte Beiträge.
Warum tritt das auf? Wenn PB jetzt mit meiner Syntax nicht mehr zufrieden wäre, könnte es das doch ordentlich ausgeben?
Was kann ich tun? Ich würde schon gern auf PB 420 umsteigen...
PB 5.72
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

Ich glaube kaum, daß das ein Bug ist.
Klingt eher wie `ne alte Userlib. Da gibt`s auch oft einen IMA -> meist irgendwo.

Funkt das bei Dir nicht?

Code: Alles auswählen

Procedure test()

ProcedureReturn 5
EndProcedure

Debug test()


lg
Marco
Windows 11 - PB 6.03 x64
_________________________________
Little John

Beitrag von Little John »

Hyper hat geschrieben:Wenn PB jetzt mit meiner Syntax nicht mehr zufrieden wäre, könnte es das doch ordentlich ausgeben?
marco2006 hat geschrieben:Ich glaube kaum, daß das ein Bug ist.
Das glaube ich ebenfalls nicht, und "Invalid memory access" ist wohl auch keine Fehlermeldung bei einem Syntaxproblem.

Gruß, Little John
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Beitrag von Hyper »

@marco2006:

Das funktioniert problemlos. Also ich greife auf keine DLL zurück, benutze auch nur Includes von mir...
PB 5.72
marco2007
Beiträge: 906
Registriert: 26.10.2006 13:19
Kontaktdaten:

Beitrag von marco2007 »

Dlls sollten eh kein Problem sein.
Und Userlibs? PureColor, PBOSL, Droopy, ...?
Windows 11 - PB 6.03 x64
_________________________________
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

Hyper hat geschrieben:Das funktioniert problemlos. Also ich greife auf keine DLL zurück, benutze auch nur Includes von mir...
Kannst Du nochmal genau überprüfen welche Aufrufkonvention die
DLL verwendet? STDCALL oder CDECL?
Dann muß man sie von PB unterschiedlich ansprechen, z.B.
CallFunction -> CallCFunction, CallFunctionFast -> CallCFunctionFast,
Import -> ImportC, Prototype -> PrototypeC

Dadurch kann es zu sehr mysteriösen Fehlern kommen, die manchmal
auch an ganz anderer Stelle auftauchen können, oder es funktioniert
zufällig mit der einen Version, mit der anderen nicht mehr.
Oder es funktioniert außerhalb von Prozeduren, aber nicht innerhalb -
auch ganz typisch für Stackprobleme.
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

Danilo hat geschrieben:Stackprobleme.
ging mir als erstes durch den kopf.
wenn auf dem stack was verwurschtelt wird,
steht in dem moment wo er die rücksprungadresse holen will da irgendwas anderes,
weil zuviel oder zuwenig gePOPt wurde,
und dann springt er ins nirvana und wenn man glück hat gibt es nur einen IMA.
also, der IMA wird schon vom Rücksprung verursacht,
aber was dazu führt ist eine operation auf dem Stack irgendwann vorher.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Beitrag von Hyper »

Danke für Eure Unterstützung.

@Danilo: Das verstehe ich nicht. Ich benutze doch keine DLLs.

Ich habe auch keine anderen eingebundenen Sourcen. Nur alles schön programmiert und teilweise in Includes.

Kann man bei der Installation etwas falsch machen? Ich habe die PureBasic_4_20_(13h4kf).exe heruntergeladen und in ein neues Verzeichnis installiert. PB 402 ist nach wie vor in einem anderen Verzeichnis. Damit muss ich ja produktiv weitermachen.
PB 5.72
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8808
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

Beitrag von NicTheQuick »

Springst du vielleicht aus irgendeiner Procedure mit einem Goto raus?
Benutzeravatar
Hyper
Beiträge: 194
Registriert: 19.04.2005 19:14

Beitrag von Hyper »

Hi Nic,

lange nichts von Dir gehört! Aber ich habe mir mal Deine Hompage angeschaut. Das Rätzel mit den Dreiecken finde ich gut!

Zum Thema:
a) Goto - natürlich nicht
b) Ich habe etwas wichtiges herausgefunden:
Der Error im ProcedureReturn hängt irgenwie mit der Definition lokaler Variablen zusammen:
1) Protected/Static Anweisung + kompletter Inhalt + ProcReturn -> Error
2) Protected/Static Anweisung + ProcReturn -> Error
3) Nur noch ProcReturn in der Procedure -> OK!

Das ist aber nicht generell. An einer anderen Stelle, kommt der Error nur, wenn lokale Variablendef. + Ein Befehl (egal welcher). Hier crasht es dann bei EndProcedure.

Leider schaffe ich es nicht, ein einfaches Beispiel nachzubauen, da klappt es immer.
PB 5.72
Antworten