Causing a BSOD in C/C++?

I'd like to know, what causes a BSOD? What is the easiet way I can cause a BSOD in C++?

(it's not for anything malicious, don't worry)
brandonhsiao90Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Infinity08Commented:
You could write a driver, and then do something in it that causes a crash (like dereferencing an invalid pointer, NULL eg.).
0
Infinity08Commented:
lol, looking around, I found this weird "trick" to cause a BSOD :

in the registry key HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\i8042prt\Parameters, create a DWORD value called CrashOnCtrlScroll, and set it to 1. Then reboot, and after that, you can cause a crash by holding the right Ctrl key, and pressing the Scroll Lock key twice.
I'm not sure what the use of that is, but it might be what you need :)
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
evilrixSenior Software Engineer (Avast)Commented:
A BSOD is caused by code running in the kernel (as I8 said, it's normally a driver) that causes an exception that is unhandled. Since the OS has no way to do anything with this unhandled exception the only safe thing it can do is terminate the kernel and display a BSOD.

The following link explains about stop errors includes a detailed explanation of the stop error trick I8 refers to. It is used for testing purposes.
http://www.tomstricks.com/how-to-manually-force-windows-xp-to-generate-a-stop-error/
0
Introduction to Web Design

Develop a strong foundation and understanding of web design by learning HTML, CSS, and additional tools to help you develop your own website.

Infinity08Commented:
>> It is used for testing purposes.

Yes, to test a very important feature ! lol ... god forbid the BSOD wouldn't work ;)
0
evilrixSenior Software Engineer (Avast)Commented:
>> Yes, to test a very important feature
Ok, for example... you want to test that your uber-important and critical program can survive a BSOD (or a Stop Error to give it the correct name) and recover properly, but how? Answer, generate a BSOD in a controlled way. I suppose you could just pull the plug but I'm not sure that would be the same test, since a stop error has other side effects that just pulling the plug doesn't and vice versa.

Full documentation on the feature can be found here: http://support.microsoft.com/kb/244139

>> god forbid the BSOD wouldn't work ;)
I wonder, is there an equivalent way to make a Linux kernel panic (other than should 'boo' really loudly at it)? I can't say I've ever come across one, I'm sure there must be thought.
0
Infinity08Commented:
There's no recovering from a BSOD, is there ? It's basically the OS saying : "I give up - this is too much for me".
0
evilrixSenior Software Engineer (Avast)Commented:
>> There's no recovering from a BSOD, is there ? It's basically the OS saying : "I give up - this is too much for me".
The OS is stopped, but as part of that it performs certain things such as perform a memory dump.
0
Infinity08Commented:
Right, but what I was getting at is : why would you want to leave it in the finished product ... Why would you give your users the option to trigger a BSOD with a few key presses ?

Which actually makes me curious ... because apparently brandonhsiao90 does want to do it ... Could you satisfy my curiosity, brandonhsiao90 ?
0
evilrixSenior Software Engineer (Avast)Commented:
that's not what I meant. I meant you generate the stop error from a different program written are part of your test suite. The ability to generate a stop error is just to facilitate testing. I'm not suggesting this should in into production code. I'm sorry if I gave that impression.
0
masheikCommented:
--what causes a BSOD?
i found the wikipedia link helpful,
http://en.wikipedia.org/wiki/Blue_Screen_of_Death
0
brandonhsiao90Author Commented:
I wanted to create a BSOD-generator, I thought that some people might actually think it interesting that there's a program whose purpose is to BSOD you.

Problem with the CrashOnCtrlScroll method is that once you do that, obviously your computer shuts down, and you have no way of restoring the old settings. Thanks for all your help!

How can I code a driver?
0
Infinity08Commented:
>> Problem with the CrashOnCtrlScroll method is that once you do that, obviously your computer shuts down, and you have no way of restoring the old settings.

Of course you do. Just reboot the PC, and then restore the old settings.


>> How can I code a driver?

"How to write a Windows driver" : http://msdn.microsoft.com/en-us/library/ms809956.aspx
0
brandonhsiao90Author Commented:
>> Of course you do. Just reboot the PC, and then restore the old settings.

But I'm distributing my program.

Thanks for the link, helped me lots.
0
Infinity08Commented:
Ok ... Well, let us know if there's anything else you need.
0
evilrixSenior Software Engineer (Avast)Commented:
The suggested answer doesn't actually answer the original question. The asker wasn't to generate a BSOD and Windows provides a built in diagnostic tool for doing this. This was documented by the following two answers.

{http:#24731548} {http:#24731561}
0
Infinity08Commented:
As it turned out in http:#25001032, that approach wouldn't work for the author, since he's looking for a tool to distribute, rather than a set of instructions. I assume that's why TheLearnedOne picked that answer.
0
evilrixSenior Software Engineer (Avast)Commented:
Well, he stated "I wanted to create a BSOD-generator" the fact he that says after about distributing it make little sense. Also, if he's looking to create a tool to generate BSOD to test the program he plans to distribute then the answers I suggest will also do that.

Either way those answers provide solutions to the original question asked (which is probably why we both suggested them in the first place). The requirements (if we can call them that) were changed later in the question.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Editors IDEs

From novice to tech pro — start learning today.