A known
id3lib bug.
The bug was even fixed in stable CVS code over 10 years ago(!), but it never got into a proper release.
line 468 in mp3_parse.cpp (id3lib) defines
const size_t VBR_HEADER_MAX_SIZE = 116; // frames, bytes, toc and scale are optional
While line 497 declares
vbr_header_size, which can be even 120 if
vbr_flags equals 0xf.
It would be sufficient to increase the value in line 468 at least to 120. Or upgrade to that "stable" code (I am going to try that also).
EDIT 1 It's another question if that change would not spoil things in internal structures or in .met files.
EDIT 2 0.50b still cannot load tags properly - both with and without the size constant fix, though differently.
Then I checked 0.50a and the latest devbuild 0.50b by deleting know*.met files and starting eMule.
0.50a loaded and hashed the file. 0.50b failed (known2_64.met was created, known.met wasn't).
The issue requires more efforts.
However, this trivial bug raises a number of questions.
First of all, eMule crashes without any dumps or useful log records; just an unhandled exception.
Hardly there is a way to guess the reason without debugger.
That again reminds me about exception handling, so that relatively minor issues would not crash eMule without warning. Or at least would give a clue to the cause of failure.
Second. The mp3 file was downloaded years ago, and it never caused any issues. I verified ED2K hash - the file did not change. Therefore, I guess, it was never rehashed afterwards until recently.
Does it mean that a downloaded mp3 file was not scanned for tags when it was completed?
Third. The reason for rehashing was a side-effect of time zone M$ patch. Since the system time information changed, a few GB of files suddenly got "changed". Does eMule compare local times instead of internal UTC timestamps?
This post has been edited by fox88: 15 November 2014 - 09:57 PM