91
3rd Party Plugins - (fb2k) / Re: foo_vis_vumeter
Last post by oops -you keep making claims that everything leaks memory. I'm confident SDK exposed methods don't leak memory, but when used incorrectly your component can. If you disagree, should be simple to show what leaks. Your current claim is equal to saying Visual C runtime leaks memory because it has malloc and new.Perhaps I'm using them incorrectly and you've told me before to read some more SDK code. I've tried to follow that advice. However, if I need to refer to the implementation details to figure something out, we have a broken process.
Also I haven't noticed any leaks in libebur128. If it indeed does, I'd appreciate you telling the source file name and line where memory is allocated that then isn't freed?
With that said, not "everything" leaks; let's stay grounded. The foobar2000 SDK is great but not perfect and the application itself must be several times the size of the SDK--plenty of surface area for a minor issue as this. I think these specific leaks are inside the foobar2000 implementation code so I can't provide you with the exact lines. For the record I build with /W4 /WX /analyze for a bare minimum baseline quality and I've instrumented everything I have access to override malloc/new (including third-party libraries which is far more than most are willing to go). I get stuff that is not get freed at exit at some random locations that "my" stuff didn't allocate. It can also see it using the Heap Profiler towards the end of the .exe exit. Often it is only 16 bytes, but it is definitely there. Almost always happens when doing layout/live editing and many times my component(s) has no instances/windows created, removed or active. Furthermore, when scanning the reports/tables it points to offsets/addresses which are not inside any of the code I wrote, I'm left to conclude that it is elsewhere. If I were to guess (total shot in the dark), it is in whatever deals with the FTH files or where splitters are created.
I've definitely made mistakes, and when these tools have embarrassingly shown me my lack skills, I have tried to correct them. When I've created the many problems through the past couple of years working on these components through my ignorance, lack of expertise or misuse of the libraries, it has been clear and obvious I'm at fault. And in my profession, I've learned to assume I'm always at fault first before seeking other root causes. Last but not least, if I could have already root caused it and fixed it or avoid whatever I might be doing that causes a problem, I would have already and it would have never come up--but anyone who "trusts me" enough to run executable code that I wrote on their machine deserves to be at least aware of 2 things: a) that if there is a problem that I know of it is not getting swept away or ignored and disclosing such issues is part of the burden of that responsibility, and b) that I'm actively making a serious effort to make it better.
If there is a better way to go about this than forum discussions and help narrow down the source, let me know. It would be a good day if this can go away. And I really do wish it is my fault because that is the easiest and quickest way to get a fix out.
On libebur128, I'm putting together a PR but it is related to different queue implementations (Glibc, OpenBSD, FreeBSD--these are not as "drop in" as claimed in the code comments) and only happens on ARM64 (not ARM64EC) builds. Most likely that is why you've not seen it. But looking through the lack of activity on external PRs, I wouldn't be too hopeful that it will get merged in.
I fixed automatic updates for this component. The reason they weren't working is because the component is listed with a different name than it actually uses.Thank you, sir. If it is the "s" and "z" difference. I tried to match the convention of the context around it. Sorry for whatever I did that caused mismatched expectations.
I'd like to request that foo_vis_vumeter have the ability to recognize user-extracted RAR's of this type and have the ability to recognize the BIN's same-name INI file in the skins folder and apply the same ignore/not ignore defaults to them.I found out that was also a thing yesterday. Should be straightforward to add this. Side comment: I'm trying to document all of these different methods because they've been coming in in a fast and ad hoc way. I personally would not have used RAR for the combo. Keeping configuration separate is messy, though, so it is an OK compromise; I don't like dealing with NFO files in media libraries :) One other thing, INI has no schema so it will be a mystery if it got parsed correctly, especially when I had to guess at what each parameter was. So, let's not keep using that.