Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.

Tbb container free causing segfault

Kaiyuan_Z_
Beginner
310 Views

Hi,

We are using the Intel® TBB concurrent container concurrent_unordered_map (as an outer level) and concurrent_vector (as the inner level) to create a hashmap, allowing concurrent fetching and growth. However, when using large amount of memory (>500G, the Linux machine has ~1T RAM space), the free operation brings segfault as follows:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffdf5b5cc75 in __TBB_machine_cmpswp1 (this=0x7ffdf4448000,
    objectToFree=0x7ffdf4449100)
    at ../../include/tbb/machine/linux_intel64.h:74
74      ../../include/tbb/machine/linux_intel64.h: No such file or directory.
        in ../../include/tbb/machine/linux_intel64.h

Here are the backtrace information:

#0  0x00007ffdf5b5cc75 in __TBB_machine_cmpswp1 (this=0x7ffdf4448000,
    objectToFree=0x7ffdf4449100)
    at ../../include/tbb/machine/linux_intel64.h:74
#1  __TBB_TryLockByte (this=0x7ffdf4448000, objectToFree=0x7ffdf4449100)
    at ../../include/tbb/tbb_machine.h:903
#2  __TBB_LockByte (this=0x7ffdf4448000, objectToFree=0x7ffdf4449100)
    at ../../include/tbb/tbb_machine.h:910
#3  scoped_lock (this=0x7ffdf4448000, objectToFree=0x7ffdf4449100)
    at ../../src/tbbmalloc/Customize.h:66
#4  rml::internal::Block::freePublicObject (this=0x7ffdf4448000,
    objectToFree=0x7ffdf4449100) at ../../src/tbbmalloc/frontend.cpp:1380
#5  0x00007ffdf5b5f100 in freeSmallObject (object=0x7ffdf4448000)
    at ../../src/tbbmalloc/frontend.cpp:2467
#6  internalPoolFree (object=0x7ffdf4448000)
    at ../../src/tbbmalloc/frontend.cpp:2568
#7  internalFree (object=0x7ffdf4448000)
    at ../../src/tbbmalloc/frontend.cpp:2591
#8  scalable_free (object=0x7ffdf4448000)
    at ../../src/tbbmalloc/frontend.cpp:2839

Note that everything is normal (the above segfault does not appear) with smaller memory usage (<500G). Is there any particular (possible) issue causing this kind of problems? Or it's due to the usage of elder version?

0 Kudos
3 Replies
Maksim_D_Intel
Employee
310 Views

Hello

Could you please specify version of the TBB library.
You can get it from library file with next command:
  strings libtbb.so.2 | grep TBB:

Kaiyuan_Z_
Beginner
310 Views

The intel compiler version is 16.0.1 with TBB version 4.4.1.

Maybe I should first try later version and come back.

Maksim D. (Intel) wrote:

Hello

Could you please specify version of the TBB library.
You can get it from library file with next command:
  strings libtbb.so.2 | grep TBB:

Kaiyuan_Z_
Beginner
310 Views

The bug is fixed with higher version of TBB.

Kaiyuan Z. wrote:

The intel compiler version is 16.0.1 with TBB version 4.4.1.

Maybe I should first try later version and come back.

Quote:

Maksim D. (Intel) wrote:

 

Hello

Could you please specify version of the TBB library.
You can get it from library file with next command:
  strings libtbb.so.2 | grep TBB:

 

 

Reply