if one tries to analyze a large wav file, e.g. 700 megs, bad thing happens, because taglib reads all the chunks into memory. possible solutions is to 1) put if (d->chunks.size()>=16) break; in the beginning of while loop in RIFF::File::read(). 2) save chunks only of known types, e.g. "ID3 ", "COMM", "data" and "fmt ".