vorbisfile is still deadlockable with I/O callback failures
My automated I/O failure scenario tester reliably deadlocks vorbisfile. Multiple callback return value checks are missing from the code, e.g. in _seek_helper; in particular case I've backtracked, _get_prev_page() enters infinite loop when seeking/reading fails. Let alone the fact that detection of seekable/nonseekable streams is a huge hack abusing seek callback return value rather rather than letting caller control it properly.