[Gelöst] Portierung bestehender Projekte auf RAD Studio Alexandria 11.2: Schutzverletzung bei Programmstart



  • Hallo,

    wir versuchen gerade bestehende Projekte (RAD Studio 10.1 und früher) auf das RAD Studio 11.2 zu portieren und stossen dabei auf folgendes Problem:

    Alle Formularanwendungen lassen sich übersetzen und linken, verursachen aber beim Start eine Schutzverletzung und bleiben stehen. Sie lassen sich nicht debuggen, weil der Fehler schon vor dem Eintritt in die tWinMain Funktion auftritt.

    Wenn man das gleiche Formular aber neu erzeugt gibt es keine Probleme, die Anwendung lässt sich übersetzen, linken und ausführen.

    Hat jemand von euch ähnliche Erfahrungen gemacht und weiss, wie man das Problem lösen kann?



  • Evtl. ein Problem mit Static Initialization Order Fiasco?



  • Möglich, keine Ahnung.
    Der Fehler tritt nicht in unseren Quelltexten auf, sondern iwo in den Tiefen einer runtime. Da kommen wir also auch nicht dran, weil's dazu keine Quelltexte gibt. Um ehrlich zu sein, ich habe überhaupt keine Ahnung, wie man das lösen könnte, weil ich auch keine Ahnung habe, was das Problem überhaupt ist.



  • @DocShoe sagte in Portierung bestehender Projekte auf RAD Studio Alexandria 11.2: Schutzverletzung bei Programmstart:

    Sie lassen sich nicht debuggen, weil der Fehler schon vor dem Eintritt in die tWinMain Funktion auftritt.

    Öh. Wieso sollte sich das nicht debuggen lassen?
    Der Visual Studio Debugger kann ohne Weiteres Crashes im Initialisierungscode der CRT/statischen Konstruktoren debuggen.

    Falls du mit RAD Studio irgendwie Debug-Infos erzeugen kannst mit denen Visual Studio was anfangen kann, probier doch einfach mal den Debugger von VS.
    Bzw. alternativ WinDbg.

    Ansonsten: stell Windows so ein dass es Crash-Dumps schreibt, starte das Programm "normal" (nicht aus der IDE/dem Debugger), und mach dann den Dump in RAD Studio auf. (Ich kenne mich mit RAD Studio nicht aus, aber ich hoffe doch stark dass man damit Crash-Dumps debuggen kann.)



  • @DocShoe sagte in Portierung bestehender Projekte auf RAD Studio Alexandria 11.2: Schutzverletzung bei Programmstart:

    Wenn man das gleiche Formular aber neu erzeugt gibt es keine Probleme, die Anwendung lässt sich übersetzen, linken und ausführen.

    Hast du mal verglichen was die Unterschiede zwischen den für neue Formulare erzeugten Sourcefiles und den bestehenden Sourcefiles sind?



  • @DocShoe sagte in Portierung bestehender Projekte auf RAD Studio Alexandria 11.2: Schutzverletzung bei Programmstart:

    Wenn man das gleiche Formular aber neu erzeugt gibt es keine Probleme, die Anwendung lässt sich übersetzen, linken und ausführen.

    Wie wurde die "portierung" gemacht? Wurde das projekt einfach mit der neuen Version von RAD Studio geöffnet und dann auf compile geklickt?

    Eventuell wurde dabei kein kompletter re-build gemacht und dadurch verschiedene libraries welche dynamisch verschiedenen c++ runtimes nutzen, zusammengelinkt. Was dann zur laufzeit zu problemen führt.

    Ein versuch wäre es wert mal forciert einen kompletten rebuild zu machen.

    Das andere ist: sehr wahrscheinlich nutzt RAD Studio 11.2 einen anderen c++ compiler (mit neuerer c++ runtime) aber die von euch verwendete "runtime" (was auch immer das ist) ist gegen eine ältere version der c++ runtime gelinkt.



  • Nach einigem Hin- und her konnten wir dir Ursache für das Problem finden, es war eine zugekauften Komponentensammlung. Nachdem wir da ein Downgrade auf eine frühere Version gemacht haben funktioniert alles wie gewünscht. (DevExpress VCL Subscription v22.x => DevExpress VCL Subscription v21.x).


Anmelden zum Antworten