It is a plain old segfault. Fortunately your crate only has 2 lines of unsafe code so we know the bug must be in one of those.
unsafe {
let val = self.values[index].swap(&mut None, Ordering::SeqCst);
bucket.push((*val).take().unwrap());
}
Here the None is part of the stack frame of this function and goes out of scope, which leaves &mut None (of type *mut Option<V>) as a dangling pointer.