When malloc() Never Returns NULL -- Reliability as an Illusion

Gunnar Kudrjavets, Jeffrey Thomas, Aditya Kumar, Nachiappan Nagappan, Ayushi Rastogi

Research output: Chapter in Book/Report/Conference proceedingConference contributionAcademicpeer-review

51 Downloads (Pure)

Abstract

For decades, the guidance given to software engineers has been to check the memory allocation results. This validation step is necessary to avoid crashes. However, in user mode, in modern operating systems (OS), such as Android, FreeBSD, iOS, and macOS, the caller does not have an opportunity to handle the memory allocation failures. This behavioral trait results from the actions of a system component called an out-of-memory (OOM) killer. We identify that the only mainstream OS that, by default, lets applications detect memory allocation failures is Microsoft Windows. The false expectation that an application can handle OOM errors can negatively impact its design. The presence of error-handling code creates an illusion of reliability and is wasteful in terms of lines of code and code size. We describe the current behavior of a sample of popular OSs during low-memory conditions and provide recommendations for engineering practices going forward.
Original languageEnglish
Title of host publicationProceedings of 2022 IEEE 33nd International Symposium on Software Reliability Engineering (ISSRE)
PublisherIEEE
Number of pages6
Publication statusSubmitted - 31-Oct-2022
EventThe 33rd IEEE International Symposium on Software Reliability Engineering (ISSRE 2022) - Charlotte, NC, USA, Charlotte, United States
Duration: 31-Oct-20223-Nov-2022
https://issre2022.github.io/

Conference

ConferenceThe 33rd IEEE International Symposium on Software Reliability Engineering (ISSRE 2022)
Abbreviated titleISSRE 2022
Country/TerritoryUnited States
CityCharlotte
Period31/10/202203/11/2022
Internet address

Fingerprint

Dive into the research topics of 'When malloc() Never Returns NULL -- Reliability as an Illusion'. Together they form a unique fingerprint.

Cite this