I know this isnt directly programming related -- but it IS related to programming on the windows platform.
I brought up this issue to avast, and even though they have yet to respond, I know they will not 'fix' it, as fixing it would require breaking the program and removing features that one up their competitors.
so I figured Id spread the word around here seeing as it hasnt been brought up on this site (although it is well known on stack overflow and other websites)
for some reason, probably deepscan, certificate checking, community reputation, and parts of their sandbox code -- avast will block most of the programs you yourself write -- a GOOD MAJORITY of them (sometimes one can sneak through if its exceptionally well coded and doesnt use a majority of common i/o processes, or common APIs such as win32).. and its not even bad practices like format strings that can allow hacks, its just... well.. almost ANYTHING.
Ive had this do things like totally crash visual studio or code::blocks during debugging, not allow simple programs (like a blank window or Hello World Dialog box) coded in ASM to run. it will simply crash -- WITH NO NOTIFICATION FROM AVAST WHATSOEVER THAT AVAST IS THE CAUSE. sometimes the program will even be STUCK in your ram, partially running, until you restart (because the ram gets dumped then, you cant even delete the 'broken' program from your hard drive to try a recompile or anything... not that your code is 'broken' to begin with)
basically this can cause a lot of problems for you if your learning to code and have no idea why its not running even though it compiles or assembles fine -- and while an exception to the projects folder or individual app may work temporarily -- when it comes time for release phase, this can cause massive problems for your users unless you advise them to dump avast from their system up front, and likely also give them instructions on creating exceptions or alternative antivirus programs (or tell them to disable avast before running)
this can be annoying for everyone -- im sure avast would add an exception for any of us, but this is simply terribly inconvenient and we'd be relying on them updating the program simply for us which MAY not happen.
we could all buy certificates for our code -- but if we are releasing for free via open source, or simply do not want to do this or cant afford it, this is can be problematic (or even ludicrous if we arent making a single penny off the code)
regardless, avast WILL break your code at some point, on someones machine. whether you run it or not. avast was my favorite AV, but they have lost my support and I will be endorsing their competitors simply because of this (which is sad, because they have lower false positive rates and a better product aside from this IMO)
so its important to be aware of this problem. I even faced this issue with simple hello world cout<< programs when I tried to get visual studio up and running as test programs to make sure it all installed right(I later decided to go back to GCC, because Im more used to it, and I also use linux so its easier in the long run then porting to vc++. I cant afford MFC anyway, and the slightly larger binary size and less effeciency of minGW is worth the portability)
the real danger is it doesnt even tell you its blocking it. it just acts like its trying to load forever, and if you dont have the pro version, it wont even try to sandbox it, sometimes getting it stuck in your memory until you dump the ram.
so users wont know to tell you avast is blocking it, and it may in fact be harder to get an exception in. it will never pop up in a scan, never be detected as a virus, but avast still wont let it run.
the minute you disable avast, your program will load instantly and run fine. but if you dont, no warning whatsoever, and your IDE will crash if you try to debug as well. if you dont debug, whatever folder its in will be stuck loading forever and just your program will crash.
just wanted to give y'all a heads up. its not limited to C/C++ -- sometimes a C++ program might be able to sneak through -- but not often, and ASM programs almost always fail during runtime because of avast -- im not sure what conditions cause this, as some programs that are well established work fine. most do. but if yours are new, they just dont. Im sure other languages (maybe not .NET or JAVA) like pascal will suffer the same issue.
VERY interesting. You may have just solved a deeply puzzling problem I've been having when trying to compile a personal project - the "half dead at loading" EXE problem you mentioned is the exact symptom. My main desktop system shipped with AVG and does not give me the same trouble as my laptop. Thank you!
Sometimes, it depends on the code itself, like when avast detects a bad code such as unmanaged pointers, classes errors etc. it may then think that it is a hack program. But the best solution is to turn off avast in such cases. Get it, avast is not going to do anything about this.
This issue isn't really specific to Avast, but to many anti-virus programs. They will often block unknown executables or ones with very recent creation dates. The simple fix is to white list your project directories.
Other anti-virus solutions might just block your programs - or even just sandbox them! But Avast is different. Avast will not only stop your programs from running, oh no, it will also take care to corrupt your MSVC install, effectively protecting you from your own hubris!
The latest versions are also able to identify other software commonly abused by the incompetent to bring harm upon their PC - No, Avast is not afraid to stand up to the flagship apps of the software giants - MS Office, Chrome, Skyrim? None are safe from its righteous fury.
But that's not all! The nature of its wrath is such that it will cripple, but not completely destroy, its enemies. You see, the developers have carefully studied Machiavelli. By corrupting installs and removing the uninstaller while leaving registry keys intact, repair or re-install becomes impossible. Your PC's demons are vanquished for all time.