Alexandre Julliard (@julliard) commented about dlls/ntdll/unix/signal_x86_64.c:
} #endif
+#ifdef __FreeBSD__ +static __siginfohandler_t *libthr_signal_handlers[_SIG_MAXSIG];
+/* occasionally signals happen right between %fs reset to GUFS32_SEL and fsbase correction, +which results in fsbase being wrong on handler entry; we'll just restore fsbase ourselves */ +static void libthr_sighandler_wrapper(int sig, siginfo_t *info, void *_ucp) {
- struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)&get_current_teb()->GdiTebBatch;
- amd64_set_fsbase(((struct amd64_thread_data *)thread_data->cpu_data)->pthread_teb);
- libthr_signal_handlers[sig - 1](sig, info, _ucp);
+}
Any reason you are not using `init_handler` for this?