This repository has been archived by the owner on Jan 20, 2022. It is now read-only.
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[LibOS] disable preempt on helper thread exit
When a helper thread exit voluntariy, the following segv happends. The reason for segv is, __handle_signal() tries to access shim_thread, it's already freed. This situation only happens with helper threads. exit system call doesn't trigger this pattern. So add __disable_preempt() before put_thread() in helper function as exeption. > #0 0x00007f99f900d77e in atomic_read (v=0x7f99f8d772b8) at ../../../Pal/lib/atomic.h:93 > #1 0x00007f99f900f800 in __handle_signal (tcb=0x7f99f9522ec0, sig=1) at bookkeep/shim_signal.c:677 > #2 0x00007f99f90052dd in enable_preempt (tcb=0x7f99f9522ec0) at ../include/shim_internal.h:507 > #3 0x00007f99f90053db in unlock (l=0x7f99f930c190 <vma_list_lock>) at ../include/shim_internal.h:581 > #4 0x00007f99f9007c65 in bkeep_munmap (addr=0x7f99f8d77000, length=8192, flags=536870912) at bookkeep/shim_vma.c:681 > #5 0x00007f99f90731f0 in __system_free (addr=0x7f99f8d77000, size=5176) at shim_malloc.c:102 > #6 0x00007f99f9072ead in slab_free (mgr=0x7f99f8dc6000, obj=0x7f99f8d77020) at ../../../Pal/lib/slabmgr.h:465 > #7 0x00007f99f90733e7 in free (mem=0x7f99f8d77020) at shim_malloc.c:332 > #8 0x00007f99f900ae99 in put_thread (thread=0x7f99f8d77020) at bookkeep/shim_thread.c:346 > #9 0x00007f99f90742c7 in shim_async_helper (arg=0x7f99f8d77020) at shim_async.c:271 > #10 0x00007f99f931cd76 in pal_thread_init (tcbptr=<optimized out>) at db_threading.c:75 > #11 0x00007f99f9321776 in clone () at clone-x86_64.S:105 Signed-off-by: Isaku Yamahata <isaku.yamahata@gmail.com>
- Loading branch information