Just been running my application through Intel ThreadChecker (Linux) and I'm finding an awful lot of errors emerging from libtbbmalloc.so and libtbb.
Is this normal?
I suspect that these are probably false positives, resulting from Intel Thread Checker not recognizing the synchronization constructs used in the TBB code and so reporting lock management as race conditions. I know we reported similar issues in Intel Parallel Inspector as we were testing compatibility prior to release. Did you try building your TBB application using the macro TBB_USE_THREADING_TOOLS? That is supposed to be the mechanism to enable embedded API calls stipulating those constructs as safe for the purposes of Intel Thread Checker and IntelParallel Inspector. If you're still seeing complaints about TBB after invoking that compilation switch, they are most likely to be bugs.
I am indeed using TBB_USE_THREADING_TOOLS when building.
I've just constructed a test application (for a seperate report to ThreadChecker tech support) which does the following:
1) create 2x tbb_threads 2) in each thread, construct a pipeline 3) each pipeline contains 5 identical filters, which do a printf() 4) terminate the pipeline after a count reaches 20
that'll be 97 errors reported...
When you say its a bug, is it a bug in TBB or a bug in ThreadChecker (or a bug in the way I'm using things)?
so unfortunately this is a bug in Thread Checker. It's an annoying one, but it has an easy fix. Please go to the "bin" directory of your Thread Checker install. By default it's in /opt/intel/itt/tcheck/bin/32(e). There is a file named tcheck10.ini, which is a configuration file, which, among other things, states which levels of instrumentation to use for known system and user modules. If you search for "tbb" in tcheck10.ini, you'll find the following 4 lines (under "user modules":
The problem with these lines is that the modules names are outdated. The ones reported in your original list all end with .so.2. And so should the ones in tcheck10.ini. So go ahead and change these four lines to: