Code Monkey home page Code Monkey logo

px_sched's People

Contributors

pplux avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

px_sched's Issues

thread sanitizer

hello,

have you tried thread sanitizer? example1 with -fsanitize=thread (linux g++ 7.2) outputs:

==================
WARNING: ThreadSanitizer: data race (pid=27920)
  Write of size 2 at 0x7ffcd50aa722 by main thread:
    #0 px::Scheduler::IndexQueue::push(unsigned int) <null> (example1+0x00000000591e)
    #1 px::Scheduler::run(std::function<void ()> const&, px::Sync*) <null> (example1+0x000000003656)
    #2 main <null> (example1+0x000000004472)

  Previous read of size 2 at 0x7ffcd50aa722 by thread T16:
    #0 px::Scheduler::IndexQueue::in_use() const <null> (example1+0x00000000599a)
    #1 px::Scheduler::WorkerThreadMain(px::Scheduler*, px::Scheduler::Worker*) <null> (example1+0x000000003fde)
    #2 void std::__invoke_impl<void, void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*>(std::__invoke_other, void (*&&)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*&&, px::Scheduler::Worker*&&) <null> (example1+0x00000000967d)
    #3 std::__invoke_result<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*>::type std::__invoke<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*>(void (*&&)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*&&, px::Scheduler::Worker*&&) <null> (example1+0x000000006b9e)
    #4 decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)(), (_S_declval<2ul>)())) std::thread::_Invoker<std::tuple<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*> >::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) <null> (example1+0x00000000a940)
    #5 std::thread::_Invoker<std::tuple<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*> >::operator()() <null> (example1+0x00000000a89c)
    #6 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*> > >::_M_run() <null> (example1+0x00000000a842)
    #7 <null> <null> (libstdc++.so.6+0x0000000bc0fe)

  Location is stack of main thread.

  Thread T16 (tid=27937, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x0000000290c3)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0x0000000bc3e4)
    #2 px::Scheduler::init(px::SchedulerParams const&) <null> (example1+0x00000000269b)
    #3 main <null> (example1+0x0000000043f4)

SUMMARY: ThreadSanitizer: data race (/home/el/testbed/px_sched/examples/example1+0x591e) in px::Scheduler::IndexQueue::push(unsigned int)
==================
Task 0 completed from Worker-0
Task 4 completed from Worker-0
Task 1 completed from Worker-1
Task 5 completed from Worker-0
Task 6 completed from Worker-0
Task 2 completed from Worker-3
Task 7 completed from Worker-0
Task 8 completed from Worker-1
Task 9 completed from Worker-0
Task 10 completed from Worker-3
Task 11 completed from Worker-0
Task 12 completed from Worker-1
Task 13 completed from Worker-0
Task 14 completed from Worker-3
Task 15 completed from Worker-1
Task 16 completed from Worker-0
Task 17 completed from Worker-3
Task 18 completed from Worker-1
Task 19 completed from Worker-1
Task 3 completed from Worker-2
Task 20 completed from Worker-1
Task 21 completed from Worker-1
Task 22 completed from Worker-2
Task 23 completed from Worker-1
Task 24 completed from Worker-2
Task 25 completed from Worker-2
Task 26 completed from Worker-2
Task 27 completed from Worker-2
Task 28 completed from Worker-2
Task 29 completed from Worker-2
Task 30 completed from Worker-2
Task 31 completed from Worker-2
Task 32 completed from Worker-0
Task 33 completed from Worker-3
Task 34 completed from Worker-2
Task 35 completed from Worker-3
Task 36 completed from Worker-1
Task 37 completed from Worker-3
Task 38 completed from Worker-3
Task 39 completed from Worker-3
Task 40 completed from Worker-3
Task 41 completed from Worker-3
Task 42 completed from Worker-3
Task 43 completed from Worker-3
Task 44 completed from Worker-3
Task 45 completed from Worker-3
Task 46 completed from Worker-3
Task 47 completed from Worker-0
Task 48 completed from Worker-3
Task 49 completed from Worker-2
Task 50 completed from Worker-2
Task 51 completed from Worker-2
Task 52 completed from Worker-2
Task 53 completed from Worker-2
Task 54 completed from Worker-2
Task 55 completed from Worker-2
Task 56 completed from Worker-2
Task 57 completed from Worker-2
Task 58 completed from Worker-2
Task 59 completed from Worker-2
Task 60 completed from Worker-2
Task 61 completed from Worker-2
Task 62 completed from Worker-2
Task 63 completed from Worker-1
Task 64 completed from Worker-1
Task 65 completed from Worker-1
Task 66 completed from Worker-1
Task 67 completed from Worker-1
Task 68 completed from Worker-1
Task 69 completed from Worker-1
Task 70 completed from Worker-1
Task 71 completed from Worker-1
Task 72 completed from Worker-1
Task 73 completed from Worker-1
Task 74 completed from Worker-1
Task 75 completed from Worker-1
Task 76 completed from Worker-1
Task 77 completed from Worker-0
Task 78 completed from Worker-2
Task 79 completed from Worker-3
Task 80 completed from Worker-3
Task 81 completed from Worker-3
Task 82 completed from Worker-3
Task 83 completed from Worker-3
Task 84 completed from Worker-3
Task 85 completed from Worker-3
Task 86 completed from Worker-3
Task 87 completed from Worker-3
Task 88 completed from Worker-3
Task 89 completed from Worker-3
Task 90 completed from Worker-3
Task 91 completed from Worker-3
Task 92 completed from Worker-1
Task 93 completed from Worker-0
Task 94 completed from Worker-0
Task 95 completed from Worker-0
Task 96 completed from Worker-0
Task 97 completed from Worker-0
Task 98 completed from Worker-0
Task 99 completed from Worker-0
Task 100 completed from Worker-0
Task 101 completed from Worker-0
Task 102 completed from Worker-0
Task 103 completed from Worker-0
Task 104 completed from Worker-0
Task 105 completed from Worker-0
Task 106 completed from Worker-2
Task 107 completed from Worker-0
Task 108 completed from Worker-2
Task 109 completed from Worker-0
Task 110 completed from Worker-0
Task 111 completed from Worker-1
Task 112 completed from Worker-1
Task 113 completed from Worker-1
Task 114 completed from Worker-1
Task 115 completed from Worker-1
Task 116 completed from Worker-1
Task 117 completed from Worker-1
Task 118 completed from Worker-2
Task 119 completed from Worker-3
Task 120 completed from Worker-2
Task 121 completed from Worker-2
Task 122 completed from Worker-2
Task 123 completed from Worker-2
Task 124 completed from Worker-2
Task 125 completed from Worker-2
Waiting for tasks to finish...
Task 126 complete==================
WARNING: ThreadSanitizer: data race (pid=27920)
  Write of size 1 at 0x7ffcd50aa6a2 by main thread:
    #0 px::Scheduler::stop() <null> (example1+0x000000002768)
    #1 px::Scheduler::~Scheduler() <null> (example1+0x00000000222d)
    #2 main <null> (example1+0x0000000044cb)

  Previous read of size 1 at 0x7ffcd50aa6a2 by thread T3:
    #0 px::Scheduler::WorkerThreadMain(px::Scheduler*, px::Scheduler::Worker*) <null> (example1+0x00000000414e)
    #1 void std::__invoke_impl<void, void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*>(std::__invoke_other, void (*&&)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*&&, px::Scheduler::Worker*&&) <null> (example1+0x00000000967d)
    #2 std::__invoke_result<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*>::type std::__invoke<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*>(void (*&&)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*&&, px::Scheduler::Worker*&&) <null> (example1+0x000000006b9e)
    #3 decltype (__invoke((_S_declval<0ul>)(), (_S_declval<1ul>)(), (_S_declval<2ul>)())) std::thread::_Invoker<std::tuple<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*> >::_M_invoke<0ul, 1ul, 2ul>(std::_Index_tuple<0ul, 1ul, 2ul>) <null> (example1+0x00000000a940)
    #4 std::thread::_Invoker<std::tuple<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*> >::operator()() <null> (example1+0x00000000a89c)
    #5 std::thread::_State_impl<std::thread::_Invoker<std::tuple<void (*)(px::Scheduler*, px::Scheduler::Worker*), px::Scheduler*, px::Scheduler::Worker*> > >::_M_run() <null> (example1+0x00000000a842)
    #6 <null> <null> (libstdc++.so.6+0x0000000bc0fe)

  Location is stack of main thread.

  Thread T3 (tid=27924, running) created by main thread at:
    #0 pthread_create <null> (libtsan.so.0+0x0000000290c3)
    #1 std::thread::_M_start_thread(std::unique_ptr<std::thread::_State, std::default_delete<std::thread::_State> >, void (*)()) <null> (libstdc++.so.6+0x0000000bc3e4)
    #2 px::Scheduler::init(px::SchedulerParams const&) <null> (example1+0x00000000269b)
    #3 main <null> (example1+0x0000000043f4)

SUMMARY: ThreadSanitizer: data race (/home/el/testbed/px_sched/examples/example1+0x2768) in px::Scheduler::stop()
==================
ThreadSanitizer: reported 2 warnings
d from Worker-2
Task 127 completed from Worker-2
Waiting for tasks to finish...DONE 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.