Closed gwern closed 10 years ago
That's odd; it looks like beets found a match but rejected the only track in it. :flushed: Investigating…
Is there any way the trackbacks/crashes could be more informative and pinpoint which file killed beets?
Alas, not really. This comes up often and there's no clear solution within beets' multithreaded context. The best we can do is keep putting up firewalls for fault isolation. If someone has an ingenious solution for making this easier to debug, I'd be interested to hear it.
That's odd; it looks like beets found a match but rejected the only track in it.
So you're able to replicate the crash on your system with the file I provided?
This comes up often and there's no clear solution within beets' multithreaded context.
Hm... perhaps each thread could append to a logfile each file it deals with and then a clause could catch all exceptions, print out the last n lines of the logfile, and exit? You wouldn't know exactly which file killed beets but you'd have a much smaller list to work with and wouldn't have to go back importing large directories.
So you're able to replicate the crash on your system with the file I provided?
Yes. And ugh, after debugging the non-obvious things, the obvious thing was the answer: that release has no tracks! That almost certainly seems like an error in the MB DB; I actually didn't know it was technically possible. Adding a check for this now.
And yes, some sort of background logging would be helpful—but per-thread logs seem like overkill. A separate issue worth discussing.
That almost certainly seems like an error in the MB DB; I actually didn't know it was technically possible.
One thing I've learned working with large user-generated datasets: everything is possible. Littlewood's law & curse of dimensionality in action. You just have to deal with the outliers as you find them...
My installation of beets crashes while dealing with one particular track: https://dl.dropboxusercontent.com/u/243666993/kenichichiba-%E3%82%AF%E3%83%A9%E3%83%A0%E3%83%8E%E3%83%97%E6%96%B0%E4%B8%96%E7%B4%80%E3%83%95%E3%83%A5%E3%82%B8%E3%83%A7%E3%83%B3%E7%A0%B4-delta.ogg
A import session:
Figuring out which track took a bit of debugging, because I have 421 tracks in that folder and the asynchronous of threading meant that the crash might happen while dealing with another file. In this case, the crash happens everytime so I could try files one by one; while importing my library, beets also segfaulted and crashed after a
free()
, but I can't easily reproduce them. Is there any way the trackbacks/crashes could be more informative and pinpoint which file killed beets?