+ act = first;
+ }
+ }
+ if (act == NULL)
+ return act;
+ //print cycles in a nice way to avoid confusion
+ //make sure thread starts appear after the create
+ if (act->is_thread_start()) {
+ ModelAction *createact = execution->get_thread(act)->get_creation();
+ if (createact) {
+ action_list_t *threadlist = &threadlists[id_to_int(createact->get_tid())];
+ if (!threadlist->empty()) {
+ ModelAction *first = threadlist->front();
+ if (first->get_seq_number() <= createact->get_seq_number())
+ act = first;
+ }