As far as how it is caused, i won't get into, it's a complicated situation, and if you are not a programmer it would be lost anyway. As for fixing it, that is a tricky matter, it could be a corrupted file or something much less/more serious going on in the OS.
Windows is written in C/C++ so an error in it's libraries is not uncommon.
Are you using Windows XP Pro?
Does this happen when you log in, or when you run a specific program?
Does the error describe which library is creating the buffer overrun?