--- /tmp/fuse.c.2.4.1 2005-12-03 18:26:53.000000000 -0500 +++ /tmp/fuse.c.2.4.1.patch 2005-12-03 18:26:53.000000000 -0500 @@ -1647,6 +1647,7 @@ void fuse_process_cmd(struct fuse *f, struct fuse_cmd *cmd) { fuse_session_process(f->se, cmd->buf, cmd->buflen, cmd->ch); + free(cmd); } int fuse_exited(struct fuse *f) @@ -1684,6 +1685,8 @@ int res = fuse_chan_receive(ch, cmd->buf, bufsize); if (res <= 0) { free_cmd(cmd); + if (res == -1) + fuse_exit(f); return NULL; } cmd->buflen = res;