diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-11-20 16:22:29 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2016-11-20 16:22:29 +0100 |
commit | 62953f120bcdc976a3dfb96505066228464a78dd (patch) | |
tree | e7fa77309a920e7b87befcfd208d05254218a059 /.gitignore | |
parent | 484a67719146e819ddad64fbda23b4b23afa3095 (diff) |
libpager, libstore: Fix crash on ENOSPC while writing data
We need to save blocked signals, otherwise longjmp will not unblock
SIGSEGV/SIGBUS, and thus next exception will kill us. Also, we need to
make sure that the preemptor is set at the right window in main memory
before letting a handler see it.
* libpager/pager-memcpy.c (do_memcpy): Call __sync_synchronize()
between aligning the fault preemptor and actually accessing data.
(fault): Use siglongjmp instead of longjmp.
(pager_memcpy): Use sigsetjmp instead of setjmp.
* libstore/memobj.c (copy, fault, memobj_memcpy): Likewise.
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions