AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CreateWindowEx stack overrun?

Ein Thema von sansimarkus · begonnen am 3. Jul 2012 · letzter Beitrag vom 4. Jul 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: CreateWindowEx stack overrun?

  Alt 3. Jul 2012, 15:29
Blicke durch deinen Code nicht durch..
Aber die Meldung sagt ja schon das ein Stack Überlauf aufgetreten ist.

Also ruft sich irgend etwas bei deiner Window erstellung immer wieder selbst auf.
So das du in einer Endlosschleife hängst.

Aber die Namensgebung ist sowas außerhalb der norm das ich mich in deinem Code nicht wirklich
zurechtfinde .. Zu Anstrengend das zu lesen.

gruss
  Mit Zitat antworten Zitat
sansimarkus

Registriert seit: 15. Dez 2011
17 Beiträge
 
Delphi XE2 Architect
 
#2

AW: CreateWindowEx stack overrun?

  Alt 3. Jul 2012, 15:58
mal den code abgespeckt (und createwindowex durch createwindow ersetzt)

Delphi-Quellcode:
unit CoreWndObj;

interface

uses
  System.SysUtils,
  System.Classes,
  system.Types,

  Winapi.Windows,
  Winapi.Messages;


type
 TCoreWnd = class(TObject)
   private
     myhWnd: HWND;
   public
      constructor create();
 end;




implementation

function WndProc(i_hWnd:HWND;i_Message:LongWord;i_wParam:WPARAM;i_lParam:LPARAM):LResult;
begin
  result := DefWindowProc(i_hWnd, i_Message, i_wParam, i_lParam);
end;


constructor TCoreWnd.create();
var
 wcex: TWndClassEx;
 dwStyle: dword;
 x,y: string;
begin

 inherited create;

 x := 'blablub';
 y := 'blblbl';

 ZeroMemory(@wcex,sizeof(wcex));
 with wcex do
  begin
   cbSize := SizeOf(wcex);
   style := CS_HREDRAW or CS_VREDRAW or CS_OWNDC;
   lpfnWndProc := @wndproc;
   hInstance := SysInit.HInstance;
   hCursor := LoadCursor(0,IDC_ARROW);
   lpszClassName := PChar(x);
   hbrBackground := 1;
  end;

 if RegisterClassEx(wcex) = 0 then
  writeln('error');

 dwStyle := WS_OVERLAPPEDWINDOW or WS_CLIPSIBLINGS or WS_CLIPCHILDREN;


 myhWnd := CreateWindow( PChar(x),
                         PChar(y),
                         dwStyle,
                         120,
                         120,
                         1280,
                         768,
                         0,0,SysInit.HInstance,nil);
 if myhWnd = 0 then
  Writeln('error');

 ShowWindow(myhWnd, SW_SHOW);
 SetForegroundWindow(myhWnd);

end;

end.
gleicher Fehler, und trotzdem funktionierts einwandfrei als 64bit version.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#3

AW: CreateWindowEx stack overrun?

  Alt 3. Jul 2012, 16:00
Ich hab da etwas gefunden, was vielleicht weiterhilft:
http://msdn.microsoft.com/de-de/magazine/cc163311.aspx
Vor allem den Hinweis auf den int3 fand ich interessant, könnte aber sein, daß ich vollkommen falsch liege.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
sansimarkus

Registriert seit: 15. Dez 2011
17 Beiträge
 
Delphi XE2 Architect
 
#4

AW: CreateWindowEx stack overrun?

  Alt 3. Jul 2012, 16:19
Was hat denn die Analyse angreifbarer Abstürze mit meinem stack buffer overrun zu tun?

Also die Windowsapi scheint von außerhalb der Delphiunits unendlich oft WndProc zu callen, wenn ich da mit dem debugger reinsteppe hängt sich allerdings wie gesagt mein XE2 auf (100% cpu auslastung im debugger thread). Warum er das nun als 64Bit Version nicht macht ist mir genauso ein Rätsel.



Edit: eigentlich erster Schritt bei solchen Fehlern, aber ich hab grade das ganze mal in einem neuen projekt ausprobiert, gleicher Fehler.

Geändert von sansimarkus ( 3. Jul 2012 um 16:27 Uhr)
  Mit Zitat antworten Zitat
sansimarkus

Registriert seit: 15. Dez 2011
17 Beiträge
 
Delphi XE2 Architect
 
#5

AW: CreateWindowEx stack overrun?

  Alt 3. Jul 2012, 16:29
Ok. Erschlag mich wer.

stdcall bei der wndproc vergessen.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: CreateWindowEx stack overrun?

  Alt 3. Jul 2012, 18:20
Ok. Erschlag mich wer.

stdcall bei der wndproc vergessen.
Warum ?
Du solltest eher mich erschlagen hätte das eigentlich sehen müssen
Aber wie gesagt die ganzen i_ vor jeden Namen vielleicht hat das mich abgelenkt.

Aber jeder wie er will.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.381 Beiträge
 
Delphi 12 Athens
 
#7

AW: CreateWindowEx stack overrun?

  Alt 3. Jul 2012, 18:21
Unter Win64 wurde auch so Einiges an den Aufrufkonventionen geändert.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
sansimarkus

Registriert seit: 15. Dez 2011
17 Beiträge
 
Delphi XE2 Architect
 
#8

AW: CreateWindowEx stack overrun?

  Alt 4. Jul 2012, 16:30
Zitat:
Unter Win64 wurde auch so Einiges an den Aufrufkonventionen geändert.
Mir stellt sich nun die Frage, ob ich für Win64 das stdcall weglassen sollte - geht mit und ohne gleichermaßen.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

AW: CreateWindowEx stack overrun?

  Alt 4. Jul 2012, 16:32
Unter Win64 wurde auch so Einiges an den Aufrufkonventionen geändert.
Auch bei den dokumentierten API Funktionen? Die haben, soweit ich weiß, immer stdcall als Aufrufkonvention.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.963 Beiträge
 
Delphi 12 Athens
 
#10

AW: CreateWindowEx stack overrun?

  Alt 4. Jul 2012, 16:44
Unter 64-Bit gibt es nur noch eine Aufrufkonvention. Du kannst also dort auch cdecl oder pascal dahinter schreiben, es wird ohnehin ignoriert.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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