|
From: Ivo R. <iv...@iv...> - 2016-12-08 10:12:43
|
2016-12-07 13:54 GMT+01:00 Radoslaw Kujawa <ku...@9l...>: > Hi Ivo, > > here is the log that appeared when we switched on trace-syscalls: > > SYSCALL[28094,1](89) sys_readlink ( 0x374581b667(/proc/self/exe), > 0xffeffec10, 4096 ) --> [pre-success] Success(0x52) > valgrind: m_syswrap/syswrap-main.c:1938 (vgPlain_client_syscall): > Assertion '0 == (sci->flags & ~(SfPollAfter | SfYieldAfter | > SfNoWriteResult))' failed. > Hi Radek, Thanks to the log you provided, I was able to quickly analyse the situation and get to the root cause. Pre-syscall wrapper for sys_readlink in syswrap-generic.c sets SfMayBlock unconditionally (via FUSE_COMPATIBLE_MAY_BLOCK) in the anticipation that the subsequent real syscall may block. However in some cases, such as when operating on /proc/self/exe, the wrapper calls the real syscall itself and therefore SfMayBlock should not have been set. If you are able to compile Valgrind from sources, I can prepare a small patch for you to test. Unfortunately I don't have an environment to test with FUSE for you. I. |