SIGABRT

Hi


I'm trying to spawn three threads from three classes. However, they terminate with a SIGABRT and this message:


Starting CORE

Performing initialization of threads

Initializing CORE 1.0

Initializing TaskManager thread.

Initialization of Event Manager

libc++abi.dylib: Initializing Message Manager thread.

terminating

(lldb)


My main code is in the "CORE":

#ifndef Core_hpp
#define Core_hpp

#include <stdio.h>
#include "TaskManager.hpp"
#include "EventManager.hpp"
#include "Scheduler.hpp"
#include "MessageManager.hpp"
#include <thread>
#include "Sampler.hpp"

class Core
{
public:
   void initialize()
    {
        cout << "Initializing CORE 1.0" << endl;
         std::thread task_thread((TaskManager()));
        //task_thread.join();
        
        std::thread event_thread((EventManager()));
        //event_thread.join();
        //std::thread scheduler_thread(scheduler);
        
        
        std::thread message_thread((MessageManager()));
        //message_thread.join();
        
        //std::thread sampler_thread((Sampler()));
    }
    
    void update_loop()
    {
        
    }

    TaskManager taskManager;
    EventManager eventManager;
    Scheduler scheduler;
    MessageManager messageManager;
    Sampler sampler;
    

};








#endif /* Core_hpp */


and for example, one of the threads is:

ifndef EventManager_hpp
#define EventManager_hpp

#include <stdio.h>
#include "Message.hpp"
#include "Event.hpp"
#include <queue>
#include <iostream>
/* GAME GEMS BOOK 3 SECTION 1.1*/

/*
 The Event Manager is the heart of the scheduler. Each task in the task manager
 defines one or more events that it handles. An event is a moment in time
 when a task is to be executed. The event manager generates events as needed
 to trigger the execution of tasks.


 */
using namespace std;

class EventManager
{
public:
   
    
    void add(Event e);       //add Event to Event Queue
    void remove(Event e);
    Event retreive(Event e);
    void update();          //
    void calculate_fire_time();
    void add(Message &m, Entity &e); //constructs an event and adds it to the events_queue
    
    void run();
    void stop();            //flags as halted, blocks remove function from manager
    
    void operator()() const
    {
        std::cout << "Initialization of Event Manager" << endl;
        while(true)
        {
            
        }
    }
    
    private:
    bool halted;
    queue<Event> events_queue;
    
    Event wrap_event(Message &msg, Entity &e);
         
};



#endif /* EventManager_hpp */


Can somebody tell me what is wrong?