Intel® oneAPI Threading Building Blocks
Ask questions and share information about adding parallelism to your applications when using this threading library.

TBB 2020.3 crash during shutdown

Matthew_G_Intel1
Employee
1,400 Views

We are seeing this crash during TBB shutdown in very rare circumstances:

 

#0  0x00002aaaab16b8d7 in pthread_detach () from /lib64/libpthread.so.0
#1  0x0000000012728749 in rml::internal::thread_monitor::detach_thread (handle=<optimized out>) at ../../src/tbb/../rml/server/thread_monitor.h:228
#2  0x000000001272900c in tbb::internal::rml::private_server::request_close_connection (this=<optimized out>) at ../../src/tbb/private_server.cpp:186
#3  0x000000001271ddcf in tbb::internal::market::release (this=<optimized out>, is_public=<optimized out>, blocking_terminate=<optimized out>) at ../../src/tbb/market.cpp:211
#4  0x0000000012723803 in tbb::internal::generic_scheduler::cleanup_master (this=<optimized out>, blocking_terminate=<optimized out>) at ../../src/tbb/scheduler.cpp:1396
#5  0x000000001271cf02 in tbb::internal::governor::auto_terminate (arg=<optimized out>) at ../../src/tbb/governor.cpp:223
#6  0x000000001272842e in tbb::internal::governor::terminate_auto_initialized_scheduler () at ../../src/tbb/governor.h:145
#7  tbb::internal::__TBB_InitOnce::~__TBB_InitOnce (this=<optimized out>, __in_chrg=<optimized out>) at ../../src/tbb/tbb_main.h:74
#8  0x00002aaaab82e9c9 in __run_exit_handlers () from /lib64/libc.so.6
#9  0x00002aaaab82ea15 in exit () from /lib64/libc.so.6
#10 0x00002aaaab817acc in __libc_start_main () from /lib64/libc.so.6
#11 0x0000000001b696e9 in _start () at ../sysdeps/x86_64/start.S:118

 This is TBB 2020.3 version running on x86_64 Linux. It appears much more frequently on ICL platform than on previous RKL & KBL platforms.

 

We have not yet tried on latest TBB version, but will try it soon.

0 Kudos
4 Replies
SeshaP_Intel
Moderator
1,344 Views

Hi,


Thanks for posting in Intel Communities.


Based on this, and our discussion about creating a priority ticket if needed, I am going ahead and closing this case for now.

Please feel free to contact us further if you need any assistance from our side.


Thanks and Regards,

Pendyala Sesha Srinivas


0 Kudos
MaurizioMonge_Meta
1,245 Views

Affected by this bug in my project.

Any chance this will be fixed soon, or any simple workaround preventing this from occurring?

I am planning to call "exit(0)" at the end of the "main" function to work around this issue, but it doesn't look ideal.

 

Kindest Regards,

Maurizio

0 Kudos
Matthew_G_Intel1
Employee
1,230 Views

Maurizio-

 

For some reason the TBB people closed this post and moved the issue report to a private ticket system.

 

Anyway, I found a workaround for this issue is to explicitly tell TBB to shut down the threads before returning from main(). In TBB 2020 (the version I use) you do that by calling tbb::task_scheduler_init::terminate(), but in newer TBB versions there is a different way to do it[1].

 

Matt

 

[1] https://oneapi-src.github.io/oneTBB/main/tbb_userguide/Migration_Guide/Task_Scheduler_Init.html#terminating-onetbb-scheduler

0 Kudos
MaurizioMonge_Meta
1,199 Views

Thanks for the answer Matthew!

 

Calling `tbb::task_scheduler_init::terminate()` or anything at the end of `main` is not ideal either because in my case it's a library which is using TBB via MKL, and would like the main program to avoid having this explicit dependency, and still make it possible for it to work with another BLAS.

For the time being my workaround will be having a SEGV handler that calls `exit(0)` if the `main` already returned.

 

Regards,

Maurizio

0 Kudos
Reply