Re:The Linux kernel's inability to gracefully handle low mem...
by robert_foss on Tuesday August 06, 2019 @10:03AM
(#20625235)
The kernel very much returns sentinel values, if something more complicated has to be transmitted error codes are commonly used.
I see nothing wrong with it.
[ Parent
| on HN ]
Re:The Linux kernel's inability to gracefully handle low mem...
by simias on Tuesday August 06, 2019 @03:45PM
(#20628782)
I'm not arguing that the kernel devs are doing it wrong. I'm only pointing out that, in my opinion, the way C deals with error handling (that is, by not doing anything at all) is far from reasonable and the cause of many bugs. It's terrible ergonomics.
If you have a kernel function returning a pointer and you think that you're supposed to check for NULL when it actually returns a ERR_PTR in case of errors you will not only fail to do the check but on top of that end up with a garbage pointer somewhere in your program. If you have a MMU and you try to de-reference the pointer you'll have a violent crash, which at least shouldn't be too hard to debug. If you feed the pointer to some hardware module or if you're working on an MMU-less system then Good Luck; Have Fun.
C doesn't have your back here. It doesn't let you signal how a function reports errors, it doesn't even let you tag nullable pointers.