Summary: | Valgrind crashes when analyzing glusterfs client | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | CES <claude.e.steiner> |
Component: | memcheck | Assignee: | Paul Floyd <pjfloyd> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | pjfloyd |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | FreeBSD Ports | ||
OS: | FreeBSD | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
CES
2021-03-01 08:09:36 UTC
Paul Floyd (porter of valgrind to freebsd) helped me to resolve this issue (simply comment out line 2172 (should always be that easy!) https://github.com/paulfloyd/freebsd_valgrind/issues/155 I'm closing this issue here... No, there really is a problem, which I've now identified. On FreeBSD swapcontext is a syscall. This can alter the registers and the signal mask. This means that the assert that the signal flags are the same at the end of VG_(client_syscall) as follows /* Make sure the tmp signal mask matches the real signal mask; sigsuspend may change this. */ vg_assert(VG_(iseqsigset)(&tst->sig_mask, &tst->tmp_sig_mask)); needs to be changed to something like vg_assert(VG_(isswapcontext)(sysno) || VG_(iseqsigset)(&tst->sig_mask, &tst->tmp_sig_mask)); where the 'isswapcontext' function a) always returns false on platforms where swapcontext is not a syscall b) returns true on FreeBSD if sysno is NR__swapcontext It was a bit easier than that. sig_mask was being set but not tmp_sig_mask. Now both get updated. |