Debusine: debuginfod server
Description of the project: Debusine provides Debian developers and maintainers with a way to host package repositories. We would like to support debug symbol packages as well, serving them in a way that’s compatible with debuginfod(8). This would make it easy for users of those packages to provide meaningful backtraces in the event of crashes.
Confirmed Mentor: Colin Watson
How to contact the mentor: cjwatson@debian.org
Confirmed co-mentors: None confirmed, but other people from the Debusine team can help if needed.
Difficulty level: Hard
Project size: 175 hours (medium)
Deliverables of the project:
Debusine transforms *-dbgsym packages into suitable artifacts with individual elements broken out.
Debusine’s archive views have buildid/* endpoints compatible with debuginfod(8).
gdb can fetch debug symbols from such repositories, and Debusine documents how to configure it to do so.
Desirable skills: Competent Python, basic Django and/or SQL, and the ability to read C/C++ well enough to analyze the details of what debuginfod(8) does (writing C/C++ is unlikely to be required).
What the intern will learn: How gdb finds debug symbols. How a real-world repository hosting system works, and how to extend it with new features.
Application tasks:
Pick a Quick fix issue from our list and try to fix it, including full test coverage for your changes.
Look at debuginfod(8)’s web API documentation and the elf_classify function in debuginfod.cxx. Prepare an initial high-level summary of what would need to be extracted from incoming debug symbol packages in order to handle the /buildid/BUILDID/debuginfo` endpoint.
AI usage policy: We will not accept applications written using LLMs, and we expect accepted students to write code themselves, not via an LLM.
