new_posix_lock (struct flock *flock, transport_t *transport, pid_t client_pid) .. if (flock->l_len == 0) lock->fl_end = ULONG_MAX; fl_end is "signed long long" type pretty much everywhere. The main bug here is that with 64bit systems ULONG_MAX gets converted to -1, and l_len=0 locks break completely. With 32bit systems it also breaks if doing lock ranges above 4GB in a file, but this is probably less of a problem. So, this should work better: lock->fl_end = LLONG_MAX; (BTW. Why aren't PGP signatures allowed here? I got "The message's content type was not explicitly allowed")