Emmanuel Dreyfus <manu@xxxxxxxxxx> wrote: > I am trying to figure out how the crash happens. We now local->fd is > valid at the begining of dht_migration_complete_check_task() since it is > dereferenced there aithout a hitch. Then it becomes NULL before the > function exits, which leads to a crash. > > That suggests a race condition. I was wrong: I added debug messages, and local->fd is already NULL when entering dht_migration_complete_check_task(). It is passed to fd_ctx_del(), but that function checks for it being NULL and just returns -1. The others function calls in dht_migration_complete_check_task() takes care of not using local->fd if local->loc.inode is not NULL. Only the offending code fails to do so: if (local->loc.inode) { ret = syncop_open (dst_node, &local->loc, local->fd->flags, local->fd); } -- Emmanuel Dreyfus http://hcpnet.free.fr/pubz manu@xxxxxxxxxx