|
From: Nikolaus R. <Nik...@ra...> - 2011-01-11 01:23:46
|
On 01/10/2011 07:48 PM, Julian Seward wrote: > Maybe some other thread is blocking? Can you figure out the > state of all threads? --trace-syscalls=yes gives you an > strace like output for your program, which might be useful. I am pretty sure that the deadlock always occurs when thread 2 tries to check if the mountpoint has been brought up (which I assume translates to a simple stat call on the mountpoint) after thread 1 has initialized the mountpoint. It does not seem to matter what thread 1 is doing after that, or thread 2 before that. Going further than that would require me to instrument and recompile the FUSE code, which I'd rather avoid if possible. Does Valgrind provide any means to determine the thread state? I could not find the --trace-syscalls option in the manual. Could you explain the output to me? What are the two numbers after the PID? Here are the last lines before the deadlock: SYSCALL[23148,2](240) sys_futex ( 0x53e80a0, 129, 1, 0x50744d8, 0x43ddbf4 ) --> [async] ... SYSCALL[23148,1](240) ... [async] --> Success(0x0:0x0) SYSCALL[23148,1](240) sys_futex ( 0x53e80a0, 129, 1, 0x47f8ccc, 0x44de1e8 ) --> [async] ... SYSCALL[23148,3](240) ... [async] --> Success(0x0:0x0) SYSCALL[23148,3](142) sys_select ( 0, 0x0, 0x0, 0x0, 0xc2e7254 ) --> [async] ... SYSCALL[23148,1](240) ... [async] --> Success(0x0:0x0) SYSCALL[23148,1](196) sys_lstat64 ( 0x50d77d0(/tmp/tmp1d2rmU), 0xbea601ec ) Best, -Nikolaus -- »Time flies like an arrow, fruit flies like a Banana.« PGP fingerprint: 5B93 61F8 4EA2 E279 ABF6 02CF A9AD B7F8 AE4E 425C |