RAD Studio Seattle 10.1: Compiler Bug?



  • Hallo zusammen,

    ich habe unter dem RAD Studio 10.1 ein total seltsames Phänomen.
    Folgender Code verursacht für den zweiten Aufruf von g eine assertion. Dann sind alle strings bis auf Check in f leer.

    #include <string>
    #include <cassert>
    
    using namespace std;
    
    string f( string i )
    {
    	return i;
    }
    
    void g( string i, const string& Check )
    {
    	i = f( i );
    	const char* pi = i.c_str();
    
    	string s = i;
    	const char* ps = s.c_str();
    
    	string t = i;
    	const char* pt = t.c_str();
    
    	assert( i == Check );
    	assert( s == Check );
    	assert( t == Check );
    }
    
    int main(int argc, _TCHAR* argv[])
    {
    	g( "Test", "Test" );
    	g( "c:\\windows\\system\\", "c:\\windows\\system\\" );
    	return 0;
    }
    

    Edit:
    Frage vergessen 😉

    Hat jemand ähnliche Probleme oder kann das nachvollziehen? Oder sind jemandem ähnliche Dinge passiert?



  • Hallo,

    Hatte mal Zeit mein Studio auf 10.1 zu updaten, habe den Code getestet und konnte das leider nicht nachvollziehen.

    Was mir jedoch aufgefallen ist, ich habe ein ziemlich großes Projekt in 10.1 aus Version 10.0 geladen und mehrfach Debuggt, dann plötzlich hat Borland die windows.h und sämtliche andere includes nicht mehr gefunden.

    Ein neustart von RAD Studio hat hier jedoch geholfen.

    Grüße,
    Daniel



  • Haste den neuen clang Compiler oder den klassischen benutzt?
    Habe das Studio gerade mal in einer VM installiert und habe da das gleiche Verhalten.



  • Nachtrag:
    Ich habe das Visual J# Redistributable deinstalliert und neu installiert. Der Fehler tritt immer noch auf. Allerdings konnte ich das Problem weiter eingrenzen. Der Fehler tritt bisher nur auf, wenn das RAD Studio unter Windows 10 64bit ausgeführt wird und auch nur beim 32bit clang Compiler. Außerdem tritt er auch nur bei strings auf, die länger als 15 Zeichen sind (die Dinkumware STL Implementation benutzt für kurze strings den Stack und erst ab 16 Bytes den Heap).



  • Hallo,

    also ich kann dies genau wie beschrieben nachvollziehen (habe den Code 1 zu 1 verwendet).
    32bit CLANG funktioniert nicht, die beiden anderen Compiler funktionieren.
    Getestet unter Win10 64bit Pro.
    Kann ich nächte Woche nochmals unter Win7 64bit Pro testen.

    MfG Stephan



  • Ich habe bei Embarcadero ein Ticket aufgemacht. Nach einigen Emails ist der Support darauf gekommen, dass es dazu bereits einen Hotfix gibt. Nachdem ich den installiert und eine Datei manuell kopieren musst tritt der Fehler nicht mehr auf.



  • Das kann doch nicht wahr sein.
    Ich hatte die update Subscription 1 installiert, direkt von der DVD, und da sind nochmals andere Versionen drin als das was in deinem Ticket verlinkt ist.
    Nachdem ich die von Dir beschriebene Datei kopiert habe geht es nun auch bei mir.
    Wenn ich allerdings bin und de Vergleiche gibt es unterschiedliche Versionen und teilweise sogar gleiche Versionen mit unterschiedlicher Dateigröße.
    Also ich glaube so langsam wird es immer mehr Zeit den absprung zu schaffen.

    MfG Stephan


Anmelden zum Antworten