diff --git a/src/sort.c b/src/sort.c index 7410abc..9d156ac 100644 --- a/src/sort.c +++ b/src/sort.c @@ -3196,6 +3196,7 @@ merge_tree_init (size_t nthreads, size_t nlines, struct line *dest) root->parent = NULL; root->level = MERGE_END; root->queued = false; + fprintf (stderr, "merge_tree_init init_node %p\n", root); pthread_mutex_init (&root->lock, NULL); init_node (root, root + 1, dest, nthreads, nlines, false); @@ -3238,6 +3239,7 @@ init_node (struct merge_node *restrict parent, node->parent = parent; node->level = parent->level + 1; node->queued = false; + fprintf (stderr, "init_node init_node %p\n", node); pthread_mutex_init (&node->lock, NULL); if (nthreads > 1) @@ -3335,6 +3337,7 @@ queue_pop (struct merge_node_queue *queue) while (! (node = heap_remove_top (queue->priority_queue))) pthread_cond_wait (&queue->cond, &queue->mutex); pthread_mutex_unlock (&queue->mutex); + fprintf (stderr, "queue_pop lock_node %p\n", node); lock_node (node); node->queued = false; return node; @@ -3455,8 +3458,10 @@ queue_check_insert_parent (struct merge_node_queue *queue, { if (node->level > MERGE_ROOT) { + fprintf (stderr, "queue_check_insert_parent lock_node %p\n", node->parent); lock_node (node->parent); queue_check_insert (queue, node->parent); + fprintf (stderr, "queue_check_insert_parent unlock_node %p\n", node->parent); unlock_node (node->parent); } else if (node->nlo + node->nhi == 0) @@ -3483,6 +3488,7 @@ merge_loop (struct merge_node_queue *queue, if (node->level == MERGE_END) { + fprintf (stderr, "merge_loop_MERGE_END unlock_node %p\n", node); unlock_node (node); /* Reinsert so other threads can pop it. */ queue_insert (queue, node); @@ -3492,6 +3498,7 @@ merge_loop (struct merge_node_queue *queue, queue_check_insert (queue, node); queue_check_insert_parent (queue, node); + fprintf (stderr, "merge_loop unlock_node %p\n", node); unlock_node (node); } } @@ -3608,6 +3615,7 @@ sortlines (struct line *restrict lines, size_t nthreads, merge_loop (queue, total_lines, tfp, temp_output); } + fprintf (stderr, "sortlines destroy_node %p\n", node); pthread_mutex_destroy (&node->lock); } @@ -3917,6 +3925,7 @@ sort (char *const *files, size_t nfiles, char const *output_file, sortlines (line, nthreads, buf.nlines, root, &queue, tfp, temp_output); queue_destroy (&queue); + fprintf (stderr, "sort destroy_node %p\n", root); pthread_mutex_destroy (&root->lock); merge_tree_destroy (merge_tree); }