AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

Ein Thema von mquadrat · begonnen am 1. Jul 2014 · letzter Beitrag vom 8. Jul 2014
Antwort Antwort
Seite 1 von 2  1 2      
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#1

Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 1. Jul 2014, 12:00
Hallo zusammen,

ich habe gerade ein Problem bei dem ich ein wenig auf dem Schlauch stehe. Ausgangslage: Eine Anwendung (lokalisiert über gnugettext) läuft stabil auf deutschen, polnischen und amerikanischen Systemen. Auf chinesischen Systemen jedoch (Regionaleinstellung Chinese Simplified), kommt es zu Zugriffsverletztungen in der user32.dll?!

Code:
main thread ($1ac4):
00000000 +000 ???
77628d31 +00b USER32.dll                     GetKeyboardLayout
0052132c +02c abcdefg.exe Vcl.Controls      TWinControl.MainWndProc
0048af70 +014 abcdefg.exe System.Classes    StdWndProc
77627885 +00a USER32.dll                     DispatchMessageW
005ee3b7 +0f3 abcdefg.exe Vcl.Forms         TApplication.ProcessMessage
005ee3fa +00a abcdefg.exe Vcl.Forms         TApplication.HandleMessage
005ee739 +0c9 abcdefg.exe Vcl.Forms         TApplication.Run
00f19d4b +1d7 abcdefg.exe ABCDEFG       264 initialization
75c43388 +010 kernel32.dll                   BaseThreadInitThunk
Anwendung ist in XE2 programmiert, falls die Info irgendwem was hilft

Mir gehen da gerade irgendwie die Ideen aus
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 1. Jul 2014, 12:18
Verwendest Du UnicodeString bzw. String oder sowas wie WideString oder AnsiString?
Bei letzterem ist das Problem klar...

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 1. Jul 2014, 12:57
Eigentlich flächendeckend String (dachte ich zumindest). Aber mir fehlt gerade noch ein wenig der Zusammenhang zum Stack-Trace bzw. warum das als Zugriffsverletzung aufschlägt. Magst du da vielleicht noch den ein oder anderen Satz schreiben?

EDIT: Meine Verwirrung hat sich noch nicht so wirklich gelegt. Der Absturz passiert nach dem Schließen eines Fenster und zwar NACH dem Release. Das Release geht also noch korrekt durch. Außerdem ist es abhängig davon, was in dem Fenster angezeigt wurde. Ich löse nirgendwo manuell Windows Messages aus.

Geändert von mquadrat ( 1. Jul 2014 um 16:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 2. Jul 2014, 10:10
Ins Blaue hinein: Kann es sein, daß bei der Übersetzung eigentlich interne Bezeichner oder Unitnamen oder sowas in der Art übersetzt wurden/werden? Im europäischen Umfeld macht das ja weniger was aus, aber sobald da chinesische Zeichen reinrutschen könnte das Problematisch werden.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#5

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 3. Jul 2014, 06:13
Das ganze ist sehr diffus. Ich habe immerhin jetzt die Stelle gefunden. Den Fehler verursacht hat ein TChart, obwohl der Fehler erst nach(!) dem Release des entsprechenden Formulars geworfen wird. Ebenso trittder Fehler nur auf, wenn das Objekt, das in diesem Form dargestellt wird, einen bestimmten Status hat. Der Status wirkt sich aber eigentlich gar nicht auf dieses TChart aus.

Wenn ich etwas Luft habe, werde ich da mal weiter testen.
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 3. Jul 2014, 07:25
Das ist ein Seiteneffekt: Der Fehler ist vermutlich ganz woanders. Hast Du dein Projekt mal mit Range- und Overflowchecks kompiliert? Mal FastMM mit FullDebugMode probiert? Erst wenn letzteres im normalen Betrieb (was deinen komischen Fehler verursacht) ohne Meckerei durchläuft, ist es ein Problem.
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.017 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 8. Jul 2014, 00:15
Ich weiß nicht, ob das mit deinem Problem zusammenhängen kann, aber ein Projekt von mir zeigte bei einem koreanischen Nutzer koreanische Zeichen als sehr seltsame andere Zeichen an, wenn es mit XE2 kompiliert wurde. Mit 2009 hingegen kein Problem. Falls du andere Compiler zur Hand hast - da gab es ja mal die Aktion, bei XE2 alle Vorgänger bis 2007 dazu zu kriegen - probier's mal damit.

Weitere Idee: Lädt dein Projekt über TStrings/TStringList Textdateien, die nicht in Unicode vorliegen und Nicht-ASCII-Zeichen enthalten?
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Benutzerbild von Memnarch
Memnarch

Registriert seit: 24. Sep 2010
737 Beiträge
 
#8

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 8. Jul 2014, 08:16
Etwas auf das ich noch nicht gestoßen bin(weil noch nie mit Chinesischen Zeichen gearbeitet habe), aber mir habe mal sagen lassen:
Chinesisch nutzt Surrogate-Pairs in strings. das heißt, dass 2 Chars ein Chinesisches Zeichen ergeben. Wird so eines vllt ausversehen auseinander gepflückt bei einer String-Operation und verursacht murks?
Da man Trunc nicht auf einen Integer anwenden kann, muss dieser zuerst in eine Float kopiert werden
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 8. Jul 2014, 09:34
Alle Zeichen im Bereich von #0 bis #$FFFF sind ganz normale UCS2-Chars.
Falls Chinesisch Zeichen von #$010000 bis #$10FFFF nutzt, dann sind diese als Surrogates im String kodiert,
aber normales Stringoperationen/-konvertierungen sollten Diese eigentlich selten zerlegen.
Und ja, es sind zwar viele chinesische Zeichen in der BMP (Basic Multilingual Plane = bis #$FFFF), aber ein großer Teil liegt auch in den Surrogates.

Was man mal machen könnte:
- das Programm mit DebugDCUs (RET+VCL) kompilieren
- Fehlersuchcodes ala Eurekalog oder MadExcept einbauen (oder man debuggt das selber)
- und vielleicht auch noch einen FastMM im FullDebugMode
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#10

AW: Zugriffsverletzung 0x00.. in user32.dll auf chinesischem Server

  Alt 8. Jul 2014, 09:37
Ich kenne mich da überhaupt nicht aus, aber das GetKeyboardLayout im Stacktrace hat nichts zu bedeuten?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz