Ticket #803 (new fixme)

Opened 12 months ago

test deadlock: test-threadpool sync-joinable

Reported by: ichthyo Owned by: ct
Priority: normal Milestone: 0integration
Component: lumieraBack Keywords:
Cc: Blocked By:
Blocking:

Description

The sync-joinable test runs into a deadlock.

The situation is as follows:

  • the main thread (running the test function) blocks waiting on the join()
  • the 'master' thread blocks waiting on (test-threadpool, 99)
      lumiera_thread_sync_other (worker); // wait until the arguments are sent
    
  • but the worker thread doesn't even start the thread function; it blocks in threads.c, 95
    static void*
    thread_loop (void* thread)
    {
    ...
    ...
      LUMIERA_CONDITION_SECTION (cond_sync, &t->signal)
        {
          t->rh = &lumiera_lock_section_.rh;
    
          do {
            lumiera_threadpool_release_thread(t);
            LUMIERA_CONDITION_WAIT (t->state != LUMIERA_THREADSTATE_IDLE);
            
    >>>^^^^^Waiting here        
    ...
    
            // NULL function means: no work to do
            INFO (threads, "function %p", t->function);
            if (t->function)
              t->function (t->arguments);    
    
Note: See TracTickets for help on using tickets.