Summary: | Deadlock when syscall is handled in other thread | ||
---|---|---|---|
Product: | [Developer tools] valgrind | Reporter: | Falk Werner <falk.werner> |
Component: | memcheck | Assignee: | Julian Seward <jseward> |
Status: | RESOLVED INTENTIONAL | ||
Severity: | normal | CC: | tom |
Priority: | NOR | ||
Version First Reported In: | 3.13.0 | ||
Target Milestone: | --- | ||
Platform: | unspecified | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Attachments: | strace and stacks of test application |
Description
Falk Werner
2019-05-07 19:16:02 UTC
What was the actual system call (ie which variant of stat) that caused the deadlock? Also, the valgrind output would be more useful that the strace. Make sure you include --trace-syscalls=yes at a minimu, The answer appears to be sys_newstat: SYSCALL[10855,1](4) sys_newstat ( 0x4ea48e0(/tmp/libfuse_test_LKz1UA), 0x1ffefff1a0 ) Which by the looks of it has not been marked as potentially blocking. I think we've been through this before - this use of fuse where the server is in the same process creates situations where system calls which would not normally be considered blocking are and I think we were reluctant to mark lots more system calls as blocking to support such as estoeric use case. I think https://bugs.kde.org/show_bug.cgi?id=278057 is what I was thinking of and it looks like we did do something - you just need to add --sim-hints=fuse-compatible to tell valgrind you're using fuse. Thanks a lot, --sim-hints=fuse-compatible solves the issue. I was not aware, that such a flag exists. I will spend more effort in investigation next time. Sorry for inconvience. |