Diskussionen zu 64 bit beta

Hier kann alles Allgemeine rund um Zusi 3 gefragt und beantwortet werden. Neuigkeiten zum Programm werden hier erscheinen.
Nachricht
Autor
Benutzeravatar
Leonard K.
Beiträge: 1049
Registriert: 12.06.2020 19:03:07
Aktuelle Projekte: NMH

Re: Diskussionen zu 64 bit beta

#81 Beitrag von Leonard K. »

Carsten Hölscher hat geschrieben: 16.08.2022 22:18:31 Leonards Fehler konnte ich übrigens nicht nachstellen.
Der Stack-Überlauf kommt bei mir auch nach dem letzten Update. Welches Betriebssystem war denn bei dem Test im Einsatz? Bei dem NAN-Problem ist es evtl. ja auch so, dass es nur unter Windows 10 und 11 auftritt, nicht aber mit Windows 7. Bei mir läuft Windows 11, ich habe es aber auch mal mit Windows 10 getestet (gleiches Ergebnis). Windows 7 steht mir leider nicht zur Verfügung.

Benutzeravatar
F. Schn.
Beiträge: 6629
Registriert: 24.10.2011 18:58:26

Re: Diskussionen zu 64 bit beta

#82 Beitrag von F. Schn. »

F. Schn. hat geschrieben: 28.06.2022 21:03:17 Ich habe mal auf Verdacht den Schlüssel HKLM\System\CurrentControlSet\Control\Session Manager\Memory Management\AllocationPreference auf 0x100000 gesetzt (siehe viewtopic.php?p=257903#p257903 ) und habe den Rechner neu gestartet. Jetzt stürzt Zusi schon beim ersten ganz normalen Start (Streckenbaututorium, Üg) mit einer SIGSEGV ab.
Ich würde mal melden, dass es bei mir in der 3.4.99.37 weiterhin auftritt. Ich kann hier nur vorschlagen, aber ich fürchte, das ist die einfachste Repro, die sich finden lässt, und ich habe so ein bisschen die Hoffnung, dass die von Jonezz25 und vielleicht auch Adrian oder sogar Leonard gemeldete Fehler dann automatisch weg sind.
Diese Signatur möchte folgendes bekannter machen: ZusiWiki · ZusiSK: Streckenprojekte · YouTube: Objektbau für Zusi · euirc: Zusi-Chat

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#83 Beitrag von Carsten Hölscher »

Code: Alles auswählen

function TD3DZusiFont.TexturGenerieren(const strFontName: PChar; Hoehe, Flags: DWORD):HResult;
type
  pBit = array[0..0] of DWORD;
  PpBit = ^pBit;
var
  hndFont,
  hndFontOld: Windows.HFONT;  //Font-Handles
  hDC: Windows.HDC;
  hndBitmap: HBITMAP;         //Bmp-Handle
  hbmOld: HGDIOBJ;
  ErsterDurchlauf: Boolean;   // Flag clear after first run
  pBitmapBits: PpBit;         //Pointer auf Device-Independent bmp
  bmpInfo: TBitmapInfo;
  x, y: DWORD;
  d3dlr: TD3DLockedRect;
  pDstRow: PByte;
  pDst16: PWord;
  bAlpha: Byte;               // 4-bit measure of pixel intensity
  a: LongWord;
  FontName:TFontName;
begin
  StrLCopy(FontName, strFontName, SizeOf(FontName) div SizeOf(Char));
  FontName[SizeOf(FontName) div SizeOf(Char) - 1]:= #0;
  FontHoehe:=Hoehe;
  FontFlags:=Flags; // or D3DFONT_FILTERED;

  hndFont:=0;
  hndFontOld:=0;
  hndBitmap:=0;
  hbmOld := 0;

  // Assume we will draw fonts into texture without scaling unless the
  // required texture size is found to be larger than the device max
  Skalierungsfaktor:=1.0;

  hDC:=CreateCompatibleDC(0);
  SetMapMode(hDC, MM_TEXT);

  Result:=CreateGDIFont(FontName, hDC, hndFont);
  if succeeded(Result) then
  begin
    hndFontOld:=SelectObject(hDC, hndFont);

    // Calculate the dimensions for the smallest power-of-two texture which
    // can hold all the printable characters
    TexturHoehe:=128;
    TexturBreite:=TexturHoehe;
    Result:=PaintAlphabet(strFontName, hDC, True);
    while (Result=D3DERR_MOREDATA) do
    begin
      TexturBreite:=TexturBreite*2;
      TexturHoehe:=TexturHoehe*2;
      Result:=PaintAlphabet(strFontName, hDC, True);
    end;

    //Texturgröße der Graka überschritten ?
    if (TexturBreite>d3dCaps.MaxTextureWidth) then
    begin
      Skalierungsfaktor:=d3dCaps.MaxTextureWidth/TexturBreite;
      TexturHoehe:=d3dCaps.MaxTextureWidth;
      TexturBreite:=TexturHoehe;

      ErsterDurchlauf:= True;
      repeat
        // If we've already tried fitting the new text, the scale is still
        // too large. Reduce and try again.
        if not ErsterDurchlauf then Skalierungsfaktor:=Skalierungsfaktor * 0.9;

        // The font has to be scaled to fit on the maximum texture size; our
        // current font is too big and needs to be recreated to scale.
        DeleteObject(SelectObject(hDC, hndFontOld));

        Result:=CreateGDIFont(FontName, hDC, hndFont);
        if succeeded(Result) then
        begin
          hndFontOld:=SelectObject(hDC, hndFont);
          ErsterDurchlauf:=False;

          Result:=PaintAlphabet(strFontName, hDC, True);
        end
      
      until Result<>D3DERR_MOREDATA;
    end;

    if succeeded(Result) then
    begin
      Result:=pIDirect3DDevice9^.CreateTexture( TexturBreite,
                                                TexturHoehe,
                                                1,
                                                0,
                                                D3DFMT_A4R4G4B4,
                                                Zusi_TexStandardPool,
                                                FontTexture,
                                                nil);
      if succeeded(Result) then
      begin
        // Prepare to create a bitmap
        ZeroMemory(@(bmpInfo.bmiHeader), SizeOf(TBitmapInfoHeader));
        bmpInfo.bmiHeader.biSize:=SizeOf(TBitmapInfoHeader);
        bmpInfo.bmiHeader.biWidth:=TexturBreite;
        bmpInfo.bmiHeader.biHeight:=TexturHoehe;
        bmpInfo.bmiHeader.biPlanes:=1;
        bmpInfo.bmiHeader.biCompression:=BI_RGB;
        bmpInfo.bmiHeader.biBitCount:=32;
        bmpInfo.bmiHeader.biHeight:=-bmpInfo.bmiHeader.biHeight;

        // Create a bitmap for the font
        hndBitmap:=CreateDIBSection(hDC, bmpInfo, DIB_RGB_COLORS, Pointer(pBitmapBits), 0, 0);

        hbmOld:=SelectObject(hDC, hndBitmap);

        // Set text properties
        SetTextColor(hDC, RGB(255, 255, 255));
        SetBkColor(hDC, $00000000);
        SetTextAlign(hDC, TA_TOP);

        // Paint the alphabet onto the selected bitmap
        Result:=PaintAlphabet(strFontName, hDC, False);
        if succeeded(Result) then
        begin
          // Lock the surface and write the alpha values for the set pixels
          FontTexture.LockRect(0, d3dlr, nil, 0);
          pDstRow := d3dlr.pBits;
          {$R-} //wegen der shr/shl-Aktionen
          for y := 0 to (TexturHoehe - 1) do
          begin
            pDst16 := PWord(pDstRow);
            for x := 0 to (TexturBreite - 1) do
            begin
              bAlpha := (pBitmapBits^[TexturBreite*y + x] and $ff) shr 4;
              if (bAlpha > 0) then
              begin
                pDst16^ := Word((bAlpha shl 12) or $0fff);
                Inc(pDst16);
              end else
              begin
                pDst16^ := $0000;    //  <--------------------- Zugriffsverletzung
                Inc(pDst16);
              end;
            end;
            pDstRow := PByte(Integer(pDstRow) + d3dlr.Pitch);
          end;
          {$R-}

             
          Result:= S_OK;
        end;

      end

    end

  end
  
  if (FontTexture<>nil) then FontTexture.UnlockRect(0);

  SelectObject(hDC, hbmOld);
  SelectObject(hDC, hndFontOld);
  DeleteObject(hndBitmap);
  DeleteObject(hndFont);
  DeleteDC(hDC);
end;
An der markierten Stelle zerlegt es den Editor bei aktivem Regirtry-Eintrag. Was für eine byte-Akrobatik der Programmierer der Textfunktion da angewendet hat, hat sich mir auf die Schnelle nichr erschlossen. Wenn jemand Muße hat, kann er gerne Vorschläge machen. Sonst muss ich mir das mal anschauen, wenn etwas mehr Zeit ist.

Carsten

F(R)S-Bauer
Beiträge: 6281
Registriert: 09.11.2002 02:00:47

Re: Diskussionen zu 64 bit beta

#84 Beitrag von F(R)S-Bauer »

Zurückgezogen.

Ralf
Zuletzt geändert von F(R)S-Bauer am 24.08.2022 16:56:18, insgesamt 1-mal geändert.

SebastianH
Beiträge: 17
Registriert: 13.06.2016 19:52:11

Re: Diskussionen zu 64 bit beta

#85 Beitrag von SebastianH »

Code: Alles auswählen

pDstRow := PByte(Integer(pDstRow) + d3dlr.Pitch);
Die Umwandlung vom 64-Bit Zeiger pDstRow in ein 32-Bit Integer schneidet Teile der Adresse ab, da müsste man denke ich Int64 nehmen.

Benutzeravatar
Max Senft
Administrator
Beiträge: 3004
Registriert: 04.11.2001 14:01:40
Aktuelle Projekte: Dies und das
Wohnort: Blieskastel, Saarland, Deutschland
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#86 Beitrag von Max Senft »

Hi,
SebastianH hat geschrieben: 24.08.2022 16:45:25

Code: Alles auswählen

pDstRow := PByte(Integer(pDstRow) + d3dlr.Pitch);
Die Umwandlung vom 64-Bit Zeiger pDstRow in ein 32-Bit Integer schneidet Teile der Adresse ab, da müsste man denke ich Int64 nehmen.
ja, sieht nach der Ursache des Problems aus.

Anstelle von Int64 vielleicht eher NativeInt nehmen (siehe https://docwiki.embarcadero.com/Librari ... .NativeInt oder https://www.freepascal.org/docs-html/rt ... veint.html). Das ist dann je nach Zielsystem passend.

Gruß
Max
Administrator, Programmierer, Ansprechpartner bei Problemen mit dem Board

Benutzeravatar
Gorgi [Vale]
Beiträge: 203
Registriert: 10.04.2019 20:22:10
Aktuelle Projekte: Am Bau bei der LN6 mitwirken.

Mdl Hcknhm,
Strecke 4020 & 4080 Schwetzingen(Mannheim) bis Üst. Forst / Graben-Neudorf.

Re: Diskussionen zu 64 bit beta

#87 Beitrag von Gorgi [Vale] »

Nabend,
ich bin grade zufällig auf einen reproduzierbaren Fehler im 3D-Editor gestoßen.
Es geht darum, das im Meldungsfenster keine "Warnungen" gemeldet werden trotz aktivem Haken, konkret geht es darum das ich einen Fehler in eine Signalassistentdatei eingebaut habe, beispielsweise fehlt im Text der Datei bei der verlinkten Datei das "xml" am Ende. Dadurch kann die andere Datei nicht aufgerufen werden im Assistenten, wenn man diese auswählt.

Wählt man diese nun aus im Signalassistent verhält er sich ganz normal, allerdings wird die Datei nicht geöffnet und es erscheint "Keine Warnung" vom Nichtaufrufen der Datei im Meldungsfenster.
In der 3.4 habe ich noch Warnungen erhalten wenn Fehler vorlagen, wie eine falsche Verknüpfung in der Datei.

Ich konnte es leider nicht in der 32bit testen.

Gruß
Gorgi

Benutzeravatar
Leonard K.
Beiträge: 1049
Registriert: 12.06.2020 19:03:07
Aktuelle Projekte: NMH

Re: Diskussionen zu 64 bit beta

#88 Beitrag von Leonard K. »

Leonard K. hat geschrieben: 02.06.2022 22:05:04 Polygonbaumodus 3D-Editor 64-Bit: Wenn man mit dem Farbeimer Randelemente markieren lässt, werden die u-Koordinaten alle auf "NAN" statt 0 gesetzt. Mit der 32-Bit Version passiert das nicht:

Bild
Das Problem besteht bei mir weiterhin. Statt der u-Koordinate wird jetzt aber die v-Koordinate auf NAN gesetzt, während die u-Koordinate auf 0 steht ;)

Einfache Repro: 3D-Editor 64bit öffnen, Objektbaumodus, Streckenelement markieren und Formkurve anwenden. Dann ein beliebiges Dreieck markieren und im Polygonbaumodus auf den Farbeimer drücken:
Bild

Benutzeravatar
Christian Lehanka
Beiträge: 583
Registriert: 04.11.2001 22:11:12
Aktuelle Projekte: 3D-Editor + Blender
Wohnort: Crailsheim
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#89 Beitrag von Christian Lehanka »

Hallo,
Christian Lehanka hat geschrieben: 18.08.2022 10:48:56 Hallo,
Christian Lehanka hat geschrieben: 09.06.2022 09:34:37 Hallo,

bei der 64bit-Version funktioniert die Fahrzeugvorschau im Fahrplaneditor nicht mehr richtig.
Bild
links 32-bit rechts 64-bit

Gruß Christian
Carsten Hölscher hat geschrieben: 09.06.2022 17:16:01 Dann wartet vielleicht einfach aufs nächste Update, denn bei mir geht es ja im aktuellen Stand.

Carsten
das Problem besteht bei mir weiterhin (ZusiSim.exe : 3.4.99.37).

Gruß
Christian
das Problem besteht weiterhin (ZusiSim.exe : 3.4.99.51)

Gruß
Christian

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#90 Beitrag von Carsten Hölscher »

Die Meldungen in diesem Thema sind noch nicht alle in das aktuelle Uodate eingeflossen. Das checke ich gerade noch durch.

Carsten

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#91 Beitrag von Carsten Hölscher »

Gorgi hat geschrieben: 08.10.2022 18:41:57 Nabend,
ich bin grade zufällig auf einen reproduzierbaren Fehler im 3D-Editor gestoßen.
Es geht darum, das im Meldungsfenster keine "Warnungen" gemeldet werden trotz aktivem Haken, konkret geht es darum das ich einen Fehler in eine Signalassistentdatei eingebaut habe, beispielsweise fehlt im Text der Datei bei der verlinkten Datei das "xml" am Ende. Dadurch kann die andere Datei nicht aufgerufen werden im Assistenten, wenn man diese auswählt.

Wählt man diese nun aus im Signalassistent verhält er sich ganz normal, allerdings wird die Datei nicht geöffnet und es erscheint "Keine Warnung" vom Nichtaufrufen der Datei im Meldungsfenster.
In der 3.4 habe ich noch Warnungen erhalten wenn Fehler vorlagen, wie eine falsche Verknüpfung in der Datei.

Ich konnte es leider nicht in der 32bit testen.

Gruß
Gorgi
Ist das noch aktuell? Wenn ja bräuchte ich bitte mal eine exakte Anleitung mit den dafür nötigen Daten. Und ist das wirklich eine reine 64bit-Frage? Also 32bit verhält sich korrekt?
Carsten

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#92 Beitrag von Carsten Hölscher »

Leonard K. hat geschrieben: 06.01.2023 16:22:48
Das Problem besteht bei mir weiterhin. Statt der u-Koordinate wird jetzt aber die v-Koordinate auf NAN gesetzt, während die u-Koordinate auf 0 steht ;)

Einfache Repro: 3D-Editor 64bit öffnen, Objektbaumodus, Streckenelement markieren und Formkurve anwenden. Dann ein beliebiges Dreieck markieren und im Polygonbaumodus auf den Farbeimer drücken:
Bild
Bei mir weiterhin OK. Können das bitte mal ein paar weitere Leute testen, um mal ein Gefühl für die Verbreitung des Problems bzw. mögliche Ansätze zu bekommen?

Carsten

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#93 Beitrag von Carsten Hölscher »

Adrian hat geschrieben: 28.06.2022 17:08:07 So also:

Lade ich den Fahrplan aus dem offiziellen Bestand funktioniert alles - Referenz ist ICE 715 aus dem 2025 D-Takt der VDE.

Lade ich nun gleichen Fahrplan und Zug aus dem eigenen Verzeichnis tritt die Zugriffsverletzung auf.
bei mir nicht reproduzierbar.
Carsten

Alwin Meschede
Beiträge: 8926
Registriert: 04.11.2001 19:57:46
Aktuelle Projekte: Zusi3 Objektbau
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#94 Beitrag von Alwin Meschede »

Leonard K. hat geschrieben: 06.01.2023 16:22:48 Das Problem besteht bei mir weiterhin. Statt der u-Koordinate wird jetzt aber die v-Koordinate auf NAN gesetzt, während die u-Koordinate auf 0 steht ;)
Bei mir auch. Dass im neuen Editor jetzt aber die v-Koordinate auf NAN gesetzt wird kann ich nicht bestätigen. Bei mir ist es weiterhin die u-Koordinate.
Mein Youtube-Kanal: youtube.com/echoray1

oberstrom (Markus)
Beiträge: 1317
Registriert: 21.05.2019 14:38:14

Re: Diskussionen zu 64 bit beta

#95 Beitrag von oberstrom (Markus) »

Alwin Meschede hat geschrieben: 06.01.2023 22:05:20 Bei mir ist es weiterhin die u-Koordinate.
Bei mir ebenfalls.

Benutzeravatar
Thomas U.
Beiträge: 3282
Registriert: 15.03.2004 16:39:15
Wohnort: Gelsenkirchen

Re: Diskussionen zu 64 bit beta

#96 Beitrag von Thomas U. »

Win7 -> funktioniert.
Win11 -> u-Koordinate auf NAN.

Adrian

Re: Diskussionen zu 64 bit beta

#97 Beitrag von Adrian »

Carsten Hölscher hat geschrieben: 06.01.2023 22:04:58
bei mir nicht reproduzierbar.
Carsten
Moin Carsten,

mit der neuen Beta hab ich das Problem nicht mehr, auch die Mini-Ruckler sind weg, danke

Gruß Adrian

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#98 Beitrag von Carsten Hölscher »

Leonard K. hat geschrieben: 18.08.2022 12:17:14 Der Stack-Überlauf kommt bei mir auch nach dem letzten Update. Welches Betriebssystem war denn bei dem Test im Einsatz? Bei dem NAN-Problem ist es evtl. ja auch so, dass es nur unter Windows 10 und 11 auftritt, nicht aber mit Windows 7. Bei mir läuft Windows 11, ich habe es aber auch mal mit Windows 10 getestet (gleiches Ergebnis). Windows 7 steht mir leider nicht zur Verfügung.
Tritt das noch auf? Bei mir ist es weiterhin unauffällig.

Carsten

Benutzeravatar
Leonard K.
Beiträge: 1049
Registriert: 12.06.2020 19:03:07
Aktuelle Projekte: NMH

Re: Diskussionen zu 64 bit beta

#99 Beitrag von Leonard K. »

Carsten Hölscher hat geschrieben: 07.01.2023 13:29:42
Leonard K. hat geschrieben: 18.08.2022 12:17:14 Der Stack-Überlauf kommt bei mir auch nach dem letzten Update.
Tritt das noch auf? Bei mir ist es weiterhin unauffällig.
Das Problem mit dem Stack-Überlauf scheint jetzt behoben zu sein.

Benutzeravatar
Carsten Hölscher
Administrator
Beiträge: 33384
Registriert: 04.07.2002 00:14:42
Wohnort: Braunschweig
Kontaktdaten:

Re: Diskussionen zu 64 bit beta

#100 Beitrag von Carsten Hölscher »

Christian Lehanka hat geschrieben: 09.06.2022 09:34:37 Hallo,

bei der 64bit-Version funktioniert die Fahrzeugvorschau im Fahrplaneditor nicht mehr richtig.
Bild
links 32-bit rechts 64-bit

Gruß Christian
In meinem aktuellen Stand läuft es korrekt. Bitte testet es mit dem gleich folgenden Update noch einmal.
Undbei Fehlern dann bitte mal Fahrplan und Zug dazu.

Carsten

Antworten