if(map_it == all_events.end()){
list<event_t*> *my_list = new list<event_t*>();
my_list->push_back(new_event);
all_events[new_event->table_name] = *my_list;
}
This code doesn't leave map_it
pointing to a valid iterator, so when you dereference it at the bottom of the function it will crash.
You probably want to add a line like
map_it = all_events.find(new_event->table_name);
inside the if { }
clause.