Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

clang 4 sanitizer is not happy with TBB usage in updater #3831

Closed
oxidase opened this issue Mar 17, 2017 · 1 comment
Closed

clang 4 sanitizer is not happy with TBB usage in updater #3831

oxidase opened this issue Mar 17, 2017 · 1 comment

Comments

@oxidase
Copy link
Contributor

oxidase commented Mar 17, 2017

The travis clang 4.0 job with enabled sanitezer fails randomly in contraction or customization step
https://travis-ci.org/Project-OSRM/osrm-backend/jobs/212017889#L3688-L3696
ASAN sees the problem in leaked resources for TBB tasks like https://github.com/Project-OSRM/osrm-backend/blob/master/src/updater/updater.cpp#L276-L284 when update_edge_weights is false

==12703==T9 TSDDtor
==12703==T14 TSDDtor
==12703==T9 exited
==12703==T14 exited
==12703==T10 TSDDtor
==12703==T8 TSDDtor
==12703==T12 TSDDtor
==12703==T10 exited
==12703==T8 exited
==12703==T12 exited
==12703==T13 TSDDtor
==12703==T13 exited
==12703==T11 TSDDtor
==12703==T5 TSDDtor
==12703==T5 exited
==12703==T11 exited
==12703==T15: stack [0x7fb11ede2000,0x7fb11f1e1f80) size 0x3fff80; local=0x7fb11f1e1e88
==12703==T4 TSDDtor
==12703==T1 TSDDtor
==12703==T2 TSDDtor
[STXXL-ERRMSG] Removing disk file: /var/tmp/stxxl
==12703==T4 exited
==12703==T1 exited
==12703==T6 TSDDtor
==12703==T7 TSDDtor
==12703==T3 TSDDtor
ASAN:DEADLYSIGNAL
==12703==T2 exited
=================================================================
==12703==T7 exited
==12703==T3 exited
==12703==ERROR: AddressSanitizer: SEGV on unknown address 0xfffffffffffffff7 (pc 0x7fb133f260ba bp 0x000000000000 sp 0x7fb11f1e1de0 T15)
==12703==The signal is caused by a READ memory access.
    #0 0x7fb133f260b9  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x230b9)
    #1 0x7fb133f2618a  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x2318a)
    #2 0x7fb133f27ce7  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x24ce7)
    #3 0x7fb133f26641  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x23641)
    #4 0x7fb133f214a9  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x1e4a9)
    #5 0x7fb133f1dad4  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x1aad4)
    #6 0x7fb133f1dd58  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x1ad58)
    #7 0x7fb1341476c9  (/lib/x86_64-linux-gnu/libpthread.so.0+0x76c9)
    #8 0x7fb132d8f0ae  (/lib/x86_64-linux-gnu/libc.so.6+0x1080ae)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: SEGV (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x230b9) 
Thread T15 created by T6 here:
    #0 0x5c4ddd  (/home/miha/mapbox/osrm-backend/builds/clang-4.0/osrm-contract+0x5c4ddd)
    #1 0x7fb133f1d98c  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x1a98c)
    #2 0x7fb12fbeb67f  (<unknown module>)

Thread T6 created by T3 here:
    #0 0x5c4ddd  (/home/miha/mapbox/osrm-backend/builds/clang-4.0/osrm-contract+0x5c4ddd)
    #1 0x7fb133f1d98c  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x1a98c)

Thread T3 created by T1 here:
    #0 0x5c4ddd  (/home/miha/mapbox/osrm-backend/builds/clang-4.0/osrm-contract+0x5c4ddd)
    #1 0x7fb133f1d98c  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x1a98c)

Thread T1 created by T0 here:
    #0 0x5c4ddd  (/home/miha/mapbox/osrm-backend/builds/clang-4.0/osrm-contract+0x5c4ddd)
    #1 0x7fb133f1d98c  (/usr/lib/x86_64-linux-gnu/libtbb.so.2+0x1a98c)

It is not critical, but one possibility to fix it is to move update_edge_weights outside of loaders and make own task list

if (update_edge_weights)
{
  // root task???
  tbb::task_list list;
  list.push_back( *new( tbb::task::allocate_child() ) /*load_internal_to_external_node_map*/ [](){} );
  list.push_back( *new( tbb::task::allocate_child() ) /*load_geometries*/ [](){} );
  set_ref_count(3);
  spawn_and_wait_for_all();
}

Issue #3788 will double number of updater runs, so the clang 4.0 job will be red with high probability for ~2000 runs

@oxidase
Copy link
Contributor Author

oxidase commented Mar 17, 2017

Fixed in #3809 by ed143b5

@oxidase oxidase closed this as completed Mar 17, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant