[PATCH 0/5] Retry if fdopen() fails due to ENOMEM
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- Mar 5, 2015, 16:07 UTC
- Message-ID
- <1425571669-22800-1-git-send-email-mhagger@alum.mit.edu>
One likely reason for fdopen() to fail is the lack of memory for allocating a FILE structure. When that happens, try freeing some memory and calling fdopen() again in the hope that it will work the second time.
This change was suggested by Jonathan Nieder [1]
In the first patch it is unsatisfying that try_to_free_routine() is called with a magic number (1000) rather than sizeof(FILE). But the C standard doesn't guarantee that FILE is a complete type, so I can't think of a better approach. Suggestions, anybody?
Michael
[1] http://article.gmane.org/gmane.comp.version-control.git/260848
Michael Haggerty (5): xfdopen(): if first attempt fails, free memory and try again fdopen_lock_file(): use fdopen_with_retry() copy_to_log(): use fdopen_with_retry() update_info_file(): use fdopen_with_retry() buffer_fdinit(): use fdopen_with_retry()
daemon.c | 4 ++-- git-compat-util.h | 11 +++++++++++ lockfile.c | 2 +- server-info.c | 2 +- vcs-svn/line_buffer.c | 2 +- wrapper.c | 28 +++++++++++++++++++++++++--- 6 files changed, 41 insertions(+), 8 deletions(-)
-- 2.1.4