read_peaks_with_fpp() already holds _lock, build_peaks_from_scratch()
takes the _lock again.
Depending on glib[mm] and the threading lib it may either result in a
deadlock, or with EDEADLK in undefined behavior when a
non-recursive lock is released twice.