![]() |
Was ist denn ein "Runtime error 218" ?
Und Plong:
Zitat:
Aber was will mir Vischda mit dem Fehler sagen ? |
Re: Was ist denn ein "Runtime error 218" ?
Zitat:
"Schmeiß schon den Rechner aus dem Fenter, und kauf dir einen mit Windows 7" :lol: [/Spaß] |
Re: Was ist denn ein "Runtime error 218" ?
Haha.
Wenn du mir 'n Scheck schickst gern. :mrgreen: |
Re: Was ist denn ein "Runtime error 218" ?
218 = rePrivInstruction = STATUS_PRIVILEGED_INSTRUCTION = EPrivilege
da wirst du wohl irgendwas falsch machen? Zitat:
|
Re: Was ist denn ein "Runtime error 218" ?
Zitat:
Nehme ich in das Projekt die SysUtils auf ist alles in Butter. Lass ich sie weg, knallt es (manch mal). Diesem Fehler debugge ich schon seit vier Stunden hinter her. Langsam werde ich :freak: . |
Re: Was ist denn ein "Runtime error 218" ?
Eine privilegierte Instruktion ist zum Beispiel, wenn man versucht unter Windows NT auf Hardware direkt zu zugreifen. machst du eventuell etwas ähnliches?
|
Re: Was ist denn ein "Runtime error 218" ?
Eigentlich nichts der gleichen.
Einfach einen INet-Stream per Bass.dll abspielen. |
Re: Was ist denn ein "Runtime error 218" ?
Passiert auch gerne als Folgefehler wenn der Stack zerschossen ist oder ähnliches. Dann wird irgendwo im Speicher Code ausgeführt der eigentlich gar kein Code ist sondern "irgendwas". Und da sind dann zufälligerweise auch mal Werte dabei die Opcodes entsprechen die halt in Ring3 nicht erlaubt sind. Z.B. Sperren von Interrupts. Mit klassischem Debugging kaum zu finden weil der Stack irgendwann kaputtgehen kann, der Crash dann aber an einer ganz anderen Stelle irgendwann viel später vollkommen unmotiviert erfolgen kann. Häufige Auslöser sind nicht initialisierte Pointer und Buffer Overflows.
|
Re: Was ist denn ein "Runtime error 218" ?
Zitat:
Ohne Exception-Handler haut es dir halt Runtime-Errors um die Ohren. Stark verkürzt sieht das so aus:
Delphi-Quellcode:
Wenn du nun verbuggten Code in irgendeinem Finalization-Abschnitt hast, kann es passieren,
unit SysUtils;
.... initialization ... InitExceptions; ... finalization ... DoneExceptions; end. dass dieser Code nach DoneExceptions ausgeführt wird - und dann gibt es auch Runtime Fehler anstelle von Exceptions. PS: EPrivilege ist kein Problem mit fehlenden Rechten. Delphi ist gar nicht in der Lage privilegierte Befehle zu erzeugen. Es bedeutet, dass das Programm irgendwo ins Nirwana gesprungen ist und dort zufällig auf eine priv. X86-Anweisung gestosen ist oder der Program Counter verweist auf eine ungültige Seite. |
Re: Was ist denn ein "Runtime error 218" ?
Zitat:
Delphi-Quellcode:
:wink:
procedure PrivilegierterBefehl;
asm cli; end; |
Re: Was ist denn ein "Runtime error 218" ?
Ich vermute mal, dass inline-asm bei dieser Aussage ausgenommen, und nur der eigentliche Delphi-Language-Compiler gemeint ist ;) Der erzeugt nämlich eher selten bis nie Binaries mit privillegisierten Anweisungen - zumindest nicht "bewusst" bzw. gewollt. (Klar kann ich ein Array mit diversen Opcodes befüllen, aber um den PC da rein zu werfen muss ich schon wieder mit inline-asm ran.)
|
Re: Was ist denn ein "Runtime error 218" ?
Zitat:
Nichtsdestotrotz gilt das weiter oben gesagte :) |
Re: Was ist denn ein "Runtime error 218" ?
War mir klar dass da einer mit einem DL-only Weg um die Ecke kommen wird :P Aber das ist denke ich grob fahrlässig und absichtlich genug damit es nicht mal so ooops passieren wird ;)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz