BUG: Unable to upload compiled sketch if contains !!!

If I compile and upload small some sketch, it is all ok. It is uploaded and running.

avrdude: verifying ...
avrdude: 14948 bytes of flash verified

But bigger another sketch uploading ends with timeout:

avrdude: Recv: . [03] 

*** dump is too big - I cut them ***

         Hardware Version: 15
         Firmware Version Master : 2.10
         Vtarget         : 0.0 V
         SCK period      : 111.8 us

avrdude: AVR device initialized and ready to accept instructions

*** dump is too big - I cut them ***

################################## | 100% 0.02s

*** dump is too big - I cut them ***

avrdude: reading input file "C:\Users\ADMINI~1\AppData\Local\Temp\build5648009842651918152.tmp\Mega2560_sketch_for_1_0_5.cpp.hex"
avrdude: writing flash (25768 bytes):

Writing | avrdude: Send: . [1b] . [0e] . [00] . [05] . [0e] . [06] . [80] . [00] . [00] . [00] . [98] 
avrdude: Recv: . [1b] 

*** dump is too big - I cut them ***

avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: ! [21] 
avrdude: Recv: . [0d] 
avrdude: Recv: . [0a] 
avrdude: Recv: A [41] 
avrdude: Recv: r [72] 
avrdude: Recv: d [64] 
avrdude: Recv: u [75] 
avrdude: Recv: i [69] 
avrdude: Recv: n [6e] 
avrdude: Recv: o [6f] 
avrdude: Recv:   [20] 
avrdude: Recv: e [65] 
avrdude: Recv: x [78] 
avrdude: Recv: p [70] 
avrdude: Recv: l [6c] 
avrdude: Recv: o [6f] 
avrdude: Recv: r [72] 
avrdude: Recv: e [65] 
avrdude: Recv: r [72] 
avrdude: Recv:   [20] 
avrdude: Recv: s [73] 
avrdude: Recv: t [74] 
avrdude: Recv: k [6b] 
avrdude: Recv: 5 [35] 
avrdude: Recv: 0 [30] 
avrdude: Recv: 0 [30] 
avrdude: Recv: V [56] 
avrdude: Recv: 2 [32] 
avrdude: Recv:   [20] 
avrdude: Recv: b [62] 
avrdude: Recv: y [79] 
avrdude: Recv:   [20] 
avrdude: Recv: M [4d] 
avrdude: Recv: L [4c] 
avrdude: Recv: S [53] 
avrdude: Recv: . [0d] 
avrdude: Recv: . [0a] 
avrdude: Recv: B [42] 
avrdude: Recv: o [6f] 
avrdude: Recv: o [6f] 
avrdude: Recv: t [74] 
avrdude: Recv: l [6c] 
avrdude: Recv: o [6f] 
avrdude: Recv: a [61] 
avrdude: Recv: d [64] 
avrdude: Recv: e [65] 
avrdude: Recv: r [72] 
avrdude: Recv: > [3e] 
avrdude: Recv: H [48] 
avrdude: Recv: u [75] 
avrdude: Recv: h [68] 
avrdude: Recv: ? [3f] 
avrdude: Recv: . [0d] 
avrdude: Recv: . [0a]

At the end is evident bootloader prompt - I don’t know what is mean.
(I try IDE 1.0.5 and 1.5.4 - same result, I try different boards - same result)

I discovered the cause. I changed glcdfont.c file. It contains a different character set. but Binary size is the same as original! Compiling reports no errors, the file is probably OK. But the upload does not work.

glcdfont.c_original (7.95 KB)

glcdfont.c_latin2 (13.3 KB)

So, by comparing files I found source of problem:

0x21, 0x21, 0x21

this causes stuck! If anywhere in the program there are this sequence, upload always crashes! Try modified blink example:

/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.

  This example code is in the public domain.
 */

// Pin 13 has an LED connected on most Arduino boards.
// give it a name:
int led = 13;
  char xxx[] = {0x00, 0x21, 0x21, 0x21, 0x00};

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(led, OUTPUT);     
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(led, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(xxx[1]);               // wait for a second
  digitalWrite(led, LOW);    // turn the LED off by making the voltage LOW
  delay(xxx[2]);               // wait for a second
  
}

It's not a bug. Three exclamation marks anywhere in your sketch puts the processor into a different mode. It's been discussed many times so if you do a search you should be able to find out more information - if you want to!

Thanks for reply. Searching for !!! gives no results. When searching for 'three/triple exclamation marks', I also did not find "Yes, it is so intentionally". Can you direct me to the right site?

https://code.google.com/p/arduino/issues/detail?id=392

Thanks, in the speed I looked at many search results and found this explanation:

http://www.avr-developers.com/bootloaderdocs/index.html

It is sad that this webpage is not referenced in the description of the products (bootloader is mentioned, but not this feature)