Very strange problem during beginning with MKR Wifi 1010

Sorry, but I was posting about a problem wich was solved shortly after (COM port change after double reset).
Inbetween I have a very representative example of the strange attitude of the MKR :

Hereafter an extract of a sketch dedicated to check the string manipulation (issued from my heating installation that must be upgraded) :

float tp = 18.2;  //Température actuelle Ch. Parents
float te = 18.7;  //Température actuelle Ch. Eva
float tv = 17.5;  //Température actuelle Ch. Victor
float cs = 21;    //Consigne Température actuelle Salon
float cp = 18.5;  //Consigne Température actuelle Ch. Parents
float ce = 15;    //Consigne Température actuelle Ch. Eva
float cv = 15;    //Consigne Température actuelle Ch. Victor
int tex = 0;     //Température extérieure
int tch = 0;     //Température Chaudière
int tct = 0;     //Température circuit
int tec = 0;     //Température ECS
int alarm = 0;    //Numéro d'alarme
int cons = 0;  //Consommation session en temps de vis (s)
int all = 0;    //Temps d'allumage de la session ou maxi si pas en chauffe
int fum = 0;    //Température de fumée actuelle ou maxi si pas en chauffe
int ses = 0;     //Nombre de sessions de la journée
int state = 0;    //Etat du graphe de chauffe
int Date = 0;     //Graphe d'envoi de date
int Mex = 0;
int mex = 0;
int Mfu = 0;
int Mal = 0;
bool ecs = 0;     //Etat de besoin d'ECS
bool hiver = 0;   //Mode hiver
char local =' ';  //Lettre du local concerné
char c;
String etat = "Chaudi&egravere&nbsppr&ecircte";   //chaîne de l'état (en clair)
String Rtemp = "203182197167";                    // températures réelles locaux
String Chaud = "65353600331481236532125512";      // état chaudière
String TimeJ = "135080090090";                    // heures de début de jour ASCII 4 x 3 caractères
String TimeN = "230230225225";                    // heures de début de nuit ASCII 4 x 3 caractères
String TempJ = "210150150150";                    // températures de jour ASCII 4 x 3 caractères
String TempN = "195185150150";                    // températures de nuit ASCII 4 x 3 caractères
String consEnCours = "210150150150150";           // Consignes appliquées en temps réel
String chaufEnCours = "0101";                     // Demandes de chauffage en temps réel
String Msg;
String stat ="30/8/2021  4.29  16  21  182 171 12 \r";  // chaîne contenu du fichier Log.txt
int DJS;                    // heure de début jour Salon ASCII 3 caractères
int DJP;                    // heure de début jour ChP ASCII 3 caractères
int DJE;                    // heure de début jour ChE ASCII 3 caractères
int DJV;                    // heure de début jour ChV ASCII 3 caractères
int DNS;                    // heure de début nuit Salon ASCII 3 caractères
int DNP;                    // heure de début nuit ChP ASCII 3 caractères
int DNE;                    // heure de début nuit ChE ASCII 3 caractères
int DNV;                    // heure de début nuit ChV ASCII 3 caractères
int djs;                    // heure de début jour Salon ASCII 3 caractères
int djp;                    // heure de début jour ChP ASCII 3 caractères
int dje;                    // heure de début jour ChE ASCII 3 caractères
int djv;                    // heure de début jour ChV ASCII 3 caractères
int dns;                    // heure de début nuit Salon ASCII 3 caractères
int dnp;                    // heure de début nuit ChP ASCII 3 caractères
int dne;                    // heure de début nuit ChE ASCII 3 caractères
int dnv;                    // heure de début nuit ChV ASCII 3 caractères
int affich = 0;
bool sal;                    // Chauffe en cours salon
bool par;                    // Chauffe en cours Ch. Parents
bool eva;                    // Chauffe en cours Ch. Eva
bool vic;                    // Chauffe en cours Ch. Victor
float TJS;                   // Consigne température de jour Salon ASCII 3 caractères
float TJP;                   // Consigne température de jour CHP ASCII 3 caractères
float TJE;                   // Consigne température de jour ChE ASCII 3 caractères
float TJV;                   // Consigne température de jour ChV ASCII 3 caractères
float TNS;                   // Consigne température de nuit Salon ASCII 3 caractères
float TNP;                   // Consigne température de nuit ChP ASCII 3 caractères
float TNE;                   // Consigne température de nuit ChP ASCII 3 caractères
float TNV;                   // Consigne température de nuit ChV ASCII 3 caractères
float tjs;                   // Consigne température de jour Salon ASCII 3 caractères
float tjp;                   // Consigne température de jour CHP ASCII 3 caractères
float tje;                   // Consigne température de jour ChE ASCII 3 caractères
float tjv;                   // Consigne température de jour ChV ASCII 3 caractères
float tns;                   // Consigne température de nuit Salon ASCII 3 caractères
float tnp;                   // Consigne température de nuit ChP ASCII 3 caractères
float tne;                   // Consigne température de nuit ChP ASCII 3 caractères
float tnv;                   // Consigne température de nuit ChV ASCII 3 caractères

void setup() {
  Serial.begin(9600);
}

void loop() {

  //****************************************** Récupération valeurs chaudière via ventilation ***********************************
  
  while ((c = Serial.read()) > '\n') Msg += (char) c; 
       if (c == '\n')
          {if (Msg.substring(0,3).equals("tch")) 
            { tch = (int)(Msg.substring(3,5)).toInt();
              Serial.print("Temp Chaudiere :");
              Serial.println(tch);
              Msg = ""; }
          if (Msg.substring(0,3).equals("tct")) 
            { tct = (int)(Msg.substring(3,5)).toInt();
              Serial.print("Temp Circuit :");
              Serial.println(tct);
              Msg = ""; }
          if (Msg.substring(0,3).equals("tex")) 
            { tex = ((int)(Msg.substring(3,5)).toInt())-20;
              Serial.print("Temp Ext :");
              Serial.println(tex);
              Msg = ""; }
          if (Msg.substring(0,3).equals("ecs")) 
            { ecs = (bool)(Msg.substring(3,4)).toInt();
              Serial.print("Besoin d'ECS :");
              Serial.println(ecs);
              Msg = ""; }
          if (Msg.substring(0,5).equals("alarm")) 
            { alarm = (int)(Msg.substring(5,6)).toInt();
              Serial.print("Alarme :");
              Serial.println(alarm);
              Msg = ""; }
          if (Msg.substring(0,5).equals("state")) 
            { state = ((int)(Msg.substring(5,7)).toInt())-10;
              Serial.print("Etat :");
              Serial.println(state);
              Msg = ""; }
          if (Msg.substring(0,5).equals("hiver")) 
            { hiver = (bool)(Msg.substring(5,6)).toInt();
              Msg = ""; 
              Serial.print("Hiver :");
              Serial.println(hiver);}
          if (Msg.substring(0,3).equals("tec")) 
            { tec = (int)(Msg.substring(3,5)).toInt();
              Serial.print("Temp ECS :");
              Serial.println(tec);
              Msg = ""; }
          if (Msg.substring(0,4).equals("cons"))   
            { cons = ((int)(Msg.substring(4,9)).toInt())-10000;
              Serial.print("Consommation :");
              Serial.println(cons);
              Msg = ""; }
          if (Msg.substring(0,3).equals("fum"))   
            { fum = ((int)(Msg.substring(3,6)).toInt())-100;
              Serial.print("Temp Fumee :");
              Serial.println(fum);
               Msg = "";}
          if (Msg.substring(0,3).equals("all"))   
            { all = ((int)(Msg.substring(3,5)).toInt())-100;
              Serial.print("Temps d'Allumage :");
              Serial.println(all);
              Msg = ""; }
          if (Msg.substring(0,3).equals("ses"))   
            { ses = ((int)(Msg.substring(3,5)).toInt())-10;
              Serial.print("Nb Sessions :");
              Serial.println(ses);
              Msg = ""; }  }  }

The upolad runs correctly after displaying this :

Arduino : 1.8.15 (Windows 10), Carte : "Arduino MKR WiFi 1010"

Le croquis utilise 15880 octets (6%) de l'espace de stockage de programmes. Le maximum est de 262144 octets.

Les variables globales utilisent 2756 octets (8%) de mémoire dynamique, ce qui laisse 30012 octets pour les variables locales. Le maximum est de 32768 octets.

Once uploaded, trying to open the serial monitor has nos effect, also trying to close the IDE. Only pressing the reset button closes the IDE window...

This is the most representative example (because having very simple operations to do) that shows the strange attitude of this module.

Tchatting with others forumers let me think that MKR has either a bad or no reputation ... Reading its characteristics, that seems strange...