mirror of
https://github.com/neovim/neovim.git
synced 2025-12-16 11:25:33 +00:00
Avoid a seg fault when exiting after OOM error
I'm debugging OOM behavior using http://www.nongnu.org/failmalloc/ on Linux. gdb environment: ``` set env LD_PRELOAD=libfailmalloc.so set env FAILMALLOC_SPACE=0xF00000 ``` SEGV was happening like this: ``` Starting program: /home/felipe/code/neovim/build/bin/nvim [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Vim: Error: Out of memory. Program received signal SIGSEGV, Segmentation fault. 0x00000000004d3719 in getout (exitval=1) at /home/felipe/code/neovim/src/main.c:836 836 if (*p_viminfo != NUL) (gdb) ``` After the fix it works as expected: ``` (gdb) set environment LD_PRELOAD=libfailmalloc.so (gdb) set environment FAILMALLOC_SPACE=0xF00000 (gdb) r Starting program: /home/felipe/code/neovim/build/bin/nvim [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Vim: Error: Out of memory. Vim: Finished. [Inferior 1 (process 21505) exited with code 01] (gdb) ```
This commit is contained in:
committed by
Thiago de Arruda
parent
de1575f3ea
commit
5afc1161ca
@@ -834,7 +834,7 @@ void getout(int exitval)
|
|||||||
apply_autocmds(EVENT_VIMLEAVEPRE, NULL, NULL, FALSE, curbuf);
|
apply_autocmds(EVENT_VIMLEAVEPRE, NULL, NULL, FALSE, curbuf);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*p_viminfo != NUL)
|
if (p_viminfo && *p_viminfo != NUL)
|
||||||
/* Write out the registers, history, marks etc, to the viminfo file */
|
/* Write out the registers, history, marks etc, to the viminfo file */
|
||||||
write_viminfo(NULL, FALSE);
|
write_viminfo(NULL, FALSE);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user