How cross-thread double free detection could work in glibc malloc