[vsipl++] Possible Threading Issue
Brad Howes
howes at ll.mit.edu
Fri Feb 20 21:34:55 UTC 2009
On Feb 20, 2009, at 9:15 AM, Jules Bergmann wrote:
> The error you're getting typically occurs if VSIPL++ hasn't been
> initialized. If VSIPL++ is initialized, and if the threads share
> their
> global address space, something else must be clearing that default
> pool
> somehow.
Jules, thanks for the info. I *think* the problem is how our DSP
framework loads algorithms, and this may only be a problem on MacOS X
systems. We have one application that reads in an XML file and
dynamically loads in various algorithm DLLs depending on the signal
processing chain defined in the XML file. Our application definitely
has the proper VSIPL++ initialization, but I think what is happening
is that due to the static linkage of the VSIPL++ library, there might
be multiple copies of some of the VSIPL++ symbols, one set in the DLL
and another in our application binary. When we load the DLL via
dlopen(), I'm not sure what VSIPL symbols are being used or
initialized. Note that there could be multiple algorithm DLLs loaded
by the application depending on the XML configuration.
My workaround for MacOS X that seems to work is to build libsvpp and
libvsip_csl as dynamic libraries instead of archives. There may be
some Darwin-specific g++ or ld flags I could use with the static
archives to fix my problem, but I'm not that familiar with the nuances
of shared libraries under Darwin.
Regards,
Brad
--
Brad Howes
Group 42
MIT Lincoln Laboratory • 244 Wood St. • Lexington, MA 02173
Phone: 781.981.5292 • Fax: 781.981.3495 • Secretary: 781.981.7420
More information about the vsipl++
mailing list