What is 0x% 08lx?

Recently, I get a lot of blue screens on my XP box. So much in fact that I downloaded the debugging tools for windows (x86) and analyzed crash dumps. So much in fact that I changed the dumps only to mini, otherwise I probably ended up earning half a working day every week, waiting for the blue screen to finish recording a detailed crash log.

Almost without exception, every dump tells me that the cause of the blue screen is some unallocated memory or misuse, and the memory at 0x% 08lx is listed in 0x% 08lx and cannot be% s.

Out of curiosity, I put "0x% 08lx" on Google and found that quite a few crash dumps included this strange message. Should I assume that 0x% 08lx is the owner of the space for something that should be meaningful? β€œ% s,” which is part of the final sentence β€œMemory cannot be% s” definitely looks like it is missing a variable or something like that.

Does anyone know the origin of this post? Is it assumed that it is useful and what is its intended ?

It’s not the main thing that I always worked on it. It is strange that so many people should see this in a lot of emergency dumps, and no one ever says: "This message was supposed to be read about accident dumps, which it should have read ..."

I'm just curious to know if anyone knows the purpose of this unusual artifact error message.

+4
source share
2 answers

I believe this is just a place for a memory address. 0x is the string prefix that notifies the user that it is hexadecimal, and %08lx is the actual placeholder for the long int ( l ) converted to hex ( x ) with a padding of 8 zeros ( 08 ).

+6
source

0x%08lx and %s almost certainly format specifiers for the C sprintf function. But it seems that the driver developers did a great job with the error handling code, as in critical code, since you should never see these qualifiers in the graphical interface - they should be replaced with significant values.

0x%08lx should turn into something like "0xE001D4AB", a hexadecimal 32-bit pointer value.

%s should be replaced with another line, in this case a description. Sort of

The memory is in 0xE001D4AB 0xE005123F and cannot be read .

Please note that I have compiled the values. In principle, there was a violation of access to kernel mode. We hope that in mini-dumps you will see which module called it and deleted / updated / whatever it does.

+10
source

Source: https://habr.com/ru/post/1339348/


All Articles