7 ms·
I still don't understand why Microsoft doesn't print human readable error code instead of just "0xc0000005". To figure out what the actual message is, you firs
by 16bytes 6y ago
I still don't understand why Microsoft doesn't print human readable error code instead of just "0xc0000005".
To figure out what the actual message is, you first have to figure out if you are seeing a HRESULT or a NTSTATUS[1]. In this case the leading 0xC is an invalid HRESULT, so it's for sure an NTSTATUS. Then you just look up the code in the bottom two bytes [2].
In this case it's just error code 5: "STATUS_ACCESS_VIOLATION", which is a memory access error, which typically means it's a bug where the program accidentally is trying to read outside of its memory space.
So, for sure an application error and not something that the user did or some sort of system issue.
There are also "facility" codes which can give you more information what where the issue is happening, but this code is just using the default.
I suppose this is better than when they would print the decimal value instead of the hex. "WTF is error code 3221225477?"
[1] https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/87fba13e-bf06-450e-83b1-9241dc81e781 https://docs.microsoft.com/en-us/openspecs/windows_protocols...
[2] https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55 https://docs.microsoft.com/en-us/openspecs/windows_protocols...
- boramalper 6y agoI really enjoyed reading this, thanks! > In this case it's just error code 5: "STATUS_ACCESS_VIOLATION", which is a memory access error, which typically means it's a bug where the program accidentally is trying to read outside of its memory space. What would be a (more) user-friendly error message for this though, given the quite technical nature of the error?
- acqq 6y agoIn fact the "status access violation" message would be much more confusing for the "normal" non-programmer person. I believe the actual error would be "access violation", status is only the prefix. But I don't think that text would help normal users more. As in: "Who is that General Protection, what has he done to my computer and why is that his fault"? "General Protection Fault" were the words actually presented to the "normal" users before. It surely didn't help them to read that.
- aflag 6y agoThey could have the error code, name and a small explanation about what the error means. Eg.: The program tried to access an invalid memory address and had to be terminated. That is likely a bug in <program name>
- jrumbut 6y agoYour computer has performed an illegal operation. sirens heard outside
- 16bytes 6y agoFor printing the codes? The programmer in me says something like: "Error: 0xC0000005 - STATUS_ACCESS_VIOLATION - (Error, Microsoft defined, unreserved) Error: This is an internal error that prevented normal operation of the application. Please contact support at X." Which conveys all of the information in the code and tells the user what they should do and that it wasn't their fault. Then it's a different story to say which code would be the most useful for the user. NPM does something like this[1]. [1] https://stackoverflow.com/questions/22445371/npm-install-error-from-the-terminal https://stackoverflow.com/questions/22445371/npm-install-err...
- CWuestefeld 6y agoA zillion years ago I was able to see some of the internal communications around the development of OS/2. One topic was the way that non-system floppies would (fail to) boot when left in the PC. What the user would see was something like (I forget the exact numbers) SYS!012345 SYS!876543 ...and they were supposed to go look that up in some reference book to see what it meant. The question was why they weren't outputting something human readable like "Unable to boot from non-system floppy". And the answer to that question was that, as an international company, they couldn't expect everyone to understand English. So why not output multiple different languages? Well, the code to output the message has to fit in the floppy's boot sector, so the space is very tight. And so there was discussion about whether it makes sense to give up having only 99% of users understand it, and instead have 0% understanding. I think the killer argument was the person who suggested outputting a message something like ______ | |__| | | () | X |______| which would just barely fit, and I think is almost universally understandable. Of course, the inscrutable message eventually stuck anyway.
- philistine 6y agoA company that valued good design would have went with the floppy image. It's a very Microsoft thing to go with the inscrutable error. On the other hand, this is the OS/2 project, which Microsoft did as a political hedge instead of a true desire to invest in that particular future. I don't fault them for not overthinking their decisions.
- kccqzy 6y agoThis kind of pictograms always reminds me of Apple. When a Mac can't boot because of corrupt boot files, it shows a "prohibit" sign. I suppose the reasoning was the same—not all users can understand English. But in this day and age a pictogram is in fact harder to search for because people describe it differently.
- perl4ever 6y ago>But in this day and age a pictogram is in fact harder to search for because people describe it differently "In this day and age" you can snap a picture of (or screenshot) something and search Google with the image.
- akira2501 6y ago> which typically means it's a bug where the program accidentally is trying to read outside of its memory space. I tracked this down with process explorer the other day. What I determined is that outlook is trying to load it's DLLs but the permissions on the FS prevent the DLLs from being read by the user. I reset the permissions for all subfolders in C:\Program Data\Microsoft Common and c:\Program Files\Microsoft\Office and it started working again for me.
- 16bytes 6y agoI would've expected a DLL load error to be ACCESS_DENIED instead of ACCESS_VIOLATION because the path for the DLL goes through a system call to open the file. ACCESS_VIOLATION would be more like dereferencing a null pointer, but it's been a number of years since I had to troubleshoot this far in on Windows. I suppose it's possible they didn't check for the error in the open file syscall then tried to use the uninitialized file handle for the DLL which caused the segfault.
- deleted 6y ago[deleted]
- INTPenis 6y agoSame for their OS, it seems to ignore power users completely. Just a few months ago I was going to connect to an SMB share by using \\nas\Downloads and it just wouldn't work, started a network troubleshooter that couldn't troubleshoot anything. If it had just told me that the name could not be resolved I would have figured out that I needed the full domain suffix because ipconfig wasn't showing it. This issue goes way back in Microsofts history, always getting on my nerves as a power user. But at the same time probably the best OS for any other type of user.
- parliament32 6y agoI think you overestimate how useful "human readable error codes" would be: https://i.imgur.com/SL88Z6g.jpg https://i.imgur.com/SL88Z6g.jpg
- LadyCailin 6y agoIf you’re looking in the event log, I think it’s fine to have human readable error messages.
- senectus1 6y agoMy experience with Azure and O365/M365 especially, is that the human readable errors are often very misleading. They'll point you in a direction that is irrelevant to the error. I just wish the references were better.