Wednesday, March 21, 2018

Blue Screen Of Death On A Wal-Mart Self Checkout Kiosk

I was running through Wal-Mart yesterday morning to pick up some Chobani yogurt for breakfast and an apple for snack. I wanted to run through the self-checkout aisle because I was pressed for time. When doing so, I noticed that one of the counters was sporting a Windows blue screen of death. Now, I don't know all that much about self-checkout kiosks other than the fact that their implementation is increasing and that they are useful for when I can't handle interacting with another human being in the morning. As for speed? Well, if you've got maybe 5 items or less, you'll probably come out ahead. But, as you approach 10 items, it becomes readily apparent that a customer is nowhere near as fast at scanning items as a seasoned checkout person is.

In any given Wal-Mart, there's almost always at least one automated checkout machine that is experiencing an issue of some sort: Either the cash threader is broken or the card reader is inoperative or the change till isn't working correctly. However, I can't say that I've ever seen a blue screen of death on an automated check out machine before. I would guess that the Wal-Mart automated check out machines are probably running Windows XP embedded. Sure, XP is old, and not officially supported anymore, but it's a very stable operating system with a fairly light fingerprint.

This particular point of sale machine appears to have an issue with one of its hardware devices. Note the error message: IRQL_NOT_LESS_OR_EQUAL_TO. Okay, so what is an IRQL (pronounced "Urkel" like the annoying kid froM Family Matters) and why does Windows care whether is is less than or equal to something? IRQL stands for Interrupt Request Level and those levels define the priority at which requests from certain components can be processed. What basically happens is that the CPU on the computer is running, doing various tasks and a piece of hardware connected to it, like the barcode scanner or the chip reader will send a request to the CPU for processing. Those requests have priority levels. The CPU then looks at the tasks it has to do, executes the ones with the higher priority first and, while doing so, sets all other tasks in the queue to "pending" until it can get to them. If a low priority task is being processed by the CPU and a task of higher priority comes in, then the CPU will interrupt (see where we're going here?) the lower priority task in order to process the higher priority task that just came in. If we look at the STOP line in the blue screen of death, we see that the IRQ level (represented by the second number in the parentheses in the STOP error) is 2

Instructions for how hardware components interface with Windows and the computer's physical memory are written into little programs called device drivers. What's probably going on here is that a device driver is attempting to access a block of memory at an IRQL that is too high. This is usually caused by faulty hardware or an incompatible device driver. My guess would be that someone tried to update a driver belonging to one of the hardware components on the checkout machine and that newest version of the driver has some instructions in it that are incompatible with the system. The solution would be to downgrade the device driver. Just see what version of the drivers the other machines are running and make sure the one with the error is at the same version for each.

No comments:

Post a Comment