From: Patrick2000 <pat...@ma...> - 2010-04-03 10:05:18
|
Hi all I have an issue where some kind of deadlock (i suppose) is causing any process trying to access a fuse mounted directory to block forever. It happens only on amd64 platform. To reproduce, install wuala (www.wuala.com), run it with a 32bit java virtual machine ("apt-get install ia32-sun-java6-bin"; "JAVA=/usr/lib/jvm/ia32-java-6-sun/jre/bin/java wuala"), enable file system integration (tools - options - ...), exit, run with 64bit java vm ("wuala -nogui"). That causes wuala to load libwualafs64.so, which loads libfuse.so.2. libfuse.so.2 forks to execute /bin/fusermount (fuse_main() -> fuse_setup() -> fuse_mount()) /bin/fusermount does a mount() syscall and then forks to execute "/bin/mount -f ..." /bin/mount does a readlink("mountpoint") syscall which never returns, leaves /bin/fusermount and /bin/mount lingering around in a sleeping state and any process trying to access the mountpoint is blocked thereafter (can't be "kill -KILL"'ed - you have to "kill -KILL mount fusermount" and "umount [mountpoint]" to get back to a working system) As mentioned, this doesn't happen on a 32-bit platform. Still, I actually wonder, why in fuse_setup_common() fuse_mount_common() is actually called before fuse_new_common() - which might imho be part of the problem? Thank's for any feedback Cheers |