"echo hello > /dev/pts/2" is blocking

JB jb.1234abcd at gmail.com
Fri Oct 14 14:12:49 UTC 2011


Alain Spineux <aspineux <at> gmail.com> writes:

> ... 
> 
> The problem is not solved but if I disable debugging, the terminal is
> not "flooded" and application finish without blocking.
> ...

It's a guessing game and a lot to chew ... the app, FUSE fs, OS :-)
So, just a few random things.

OS:
===
Because of "After hours the program "freeze"...":
$ ulimit -a
$ cat /etc/sysctl.conf

Around the time your app gets locked, any messages in /var/log/messages ?
$ ls -al /dev/pts/*
 
FUSE:
=====
http://fuse.sourceforge.net/
- any FUSE related strange messages in /var/log/messages (since boot time or
  FUSE fs mount) ?
- kernel module
  $ lsmod |grep -i fuse
  $ modinfo fuse
  Parameters ?
- verify
  # find /etc -iname "*fuse*"
- FUSE fs mount options
  Any unusual FUSE (or other) options ? Mounted manually or in /etc/fstab ?
- FUSE fs configuration
  "By default FUSE filesystems run multi-threaded.  This can be verified by
  entering the mountpoint recursively in the fusexmp filesystem.
  Multi-threaded operation can be disabled by adding the -s option."
  Would that help ?
- FUSE fs with quota (space, files/inodes,...) ? Enabled ?
- application (ioctl ?) vice Linux/UNIX vice FUSE API - conflicts ?
  $ man ioctl
    ...
    DESCRIPTION
      The  ioctl()  function  manipulates the underlying device parameters of
      special files.  In particular, many operating characteristics of  char‐
      acter  special  files  (e.g., terminals) may be controlled with ioctl()
      requests.
      ...
    NOTES
       In  order  to  use this call, one needs an open file descriptor.  Often
       the open(2) call has unwanted side effects, that can be  avoided  under
       Linux by giving it the O_NONBLOCK flag.
    ...
   $ man tty_ioctl 
   $ less -i /usr/share/doc/fuse-2.8.5/FAQ
     ...
     Why doesn't FUSE forward ioctl() calls to the filesystem?
     ---------------------------------------------------------
     Because it's not possible: data passed to ioctl() doesn't have a well
     defined length and structure like read() and write().  Consider using
     getxattr() and setxattr() instead.
- application (ioctl ?) vice Linux/UNIX vice FUSE API - conflicts ?
   $ less -i /usr/share/doc/fuse-2.8.5/FAQ
   ...
   What is the reason for IO errors?
   ---------------------------------
   < read this stuff > 
   ...

The app
=======
Because you indicated that you get debug messages up to the moment of lockup,
if you have access to source code you could try to locate the last debug msg
place, or from your gdb session, and try narrow the place or logic where it
happens.

It is quite possible you will need to search their various mailing list
archives or contact devs.

JB




More information about the users mailing list