so while valgrind finds that the error is my mind, not my system, i'll paste some scrollback in .... here's where i identified that the hang was within the remote_name() function. i set a breakpoint within it and restarted execution: 410 auto remote_name = repo_entry->remote_name(commit_id); (gdb) ^C Program received signal SIGINT, Interrupt. 0x00007ffff7bc2292 in ?? () (gdb) break 81 Breakpoint 5 at 0x55555555a9a4: file process2.cpp, line 81. (gdb) disable 4 (gdb) run The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /media/extradisk/src/codefudge/codefudge/datagen/process2 ../repos/Rust warning: Probes-based dynamic linker interface failed. Reverting to original interface. Loading commits for ../repos/Rust commit: a3632327e441c5975f2e40ca794111c87de80d8a Breakpoint 3, main (argc=2, argv=0x7fffffffe2e8) at process2.cpp:761 761 if (outputter.process(max_diffs_per_commit)) { (gdb) disable 3 (gdb) cont Continuing. looping over diff: a3632327e441c5975f2e40ca794111c87de80d8a Breakpoint 5, repo_commits::remote_name[abi:cxx11](cppgit2::oid const&) (this=0x5555555ac478, commit=...) at process2.cpp:81 81 static thread_local std::vector<cppgit2::oid> non_remote_references; here i held "n" for a while to watch the loop continue. it was finding commits that didn't match its condition on line 90, so it just loop for a bit, and I set a breakpoint on line 91 to drill down: (gdb) list 80 { 81 static thread_local std::vector<cppgit2::oid> non_remote_references; 82 non_remote_references.clear(); 83 for ( 84 reference_iter.init(repository); 85 reference_iter; 86 ++ reference_iter 87 ) { 88 auto branch = *reference_iter; 89 auto branch_tip = branch.resolve().target(); (gdb) list 90 if (branch_tip == commit || repository.is_descendant_of(branch_tip, commit)) { 91 static thread_local std::string branch_name; 92 branch_name = branch.name(); 93 try { 94 return repository.branch_remote_name(branch_name); 95 } catch (cppgit2::git_exception &) { 96 non_remote_references.push_back(branch_tip); 97 } 98 } 99 } (gdb) break 91 Breakpoint 6 at 0x55555555ab10: file process2.cpp, line 91. (gdb) cont Continuing.