I'm getting LabVIEW (2012 and 2013 both) exiting with an access violation error when I _close_ a VI. Note that no VIs are running at that point, and its heirarchy is the only thing open. It is absolutely repeatable. This VI does make several calls to a DLL, but since it isn't running, I'm hesitant to say that it's a problem inside the DLL (and it's not my DLL, so I can't peek inside it anyway). So my question: what can I do to fix this? Is there some DLL unloading thing that I need to do? I've already tried to do the trick of sending the "call library node" an empty path on its final call -- that has no effect.
This is mostly conjecture, but it sounds to me like your DLL *may* be reserving memory within the region LabVIEW has already allocated and not cleaning it up. When LabVIEW attempts to deallocate on exit, you're encountering an access violation.
To narrow things down further:
1) Does this happen in other VIs that call the DLL, or if you create a new VI that makes the same call? Try creating an otherwise empty VI that uses the library and see what happens.
2) Does the library expose a teardown or cleanup function?
3) If you make other calls into the same DLL do you see the same behavior?
4) Have you attempted calling the DLL from other languages?