]> git.lizzy.rs Git - rust.git/commit
std: Render large exit codes as hex on Windows
authorAlex Crichton <alex@alexcrichton.com>
Wed, 9 Jan 2019 17:35:09 +0000 (09:35 -0800)
committerAlex Crichton <alex@alexcrichton.com>
Thu, 10 Jan 2019 15:52:33 +0000 (07:52 -0800)
commitbbb5448de447eeef2eae09a6df93553a6d1ccac7
tree18b4a99257cb60b21b3738128838d55c99349b78
parentd22fa2d87d03d19fdb1359faab9ec5e74eff26b3
std: Render large exit codes as hex on Windows

On Windows process exit codes are never signals but rather always 32-bit
integers. Most faults like segfaults and such end up having large
integers used to represent them, like STATUS_ACCESS_VIOLATION being
0xC0000005. Currently, however, when an `ExitStatus` is printed this
ends up getting rendered as 3221225477 which is somewhat more difficult
to debug.

This commit adds a branch in `Display for ExitStatus` on Windows which
handles exit statuses where the high bit is set and prints those exit
statuses as hex instead of with decimals. This will hopefully preserve
the current display for small exit statuses (like `exit code: 22`), but
assist in quickly debugging segfaults/access violations/etc. I've
found at least that the hex codes are easier to search for than decimal.

I wasn't able to find any official documentation saying that all system
exit codes have the high bit set, but I figure it's a good enough
heuristic for now.
src/libstd/sys/windows/process.rs