Command Line Bug Hunting in FreeBSD
source link: http://adventurist.me/posts/00301/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
FreeBSD uses bugzilla for tracking bugs, taking feature requests, regressions and issues in the Operating System. The web interface for bugzilla is okay, but if you want to do a lot of batch operations it is slow to deal with. We are planning to run a bugsquash in July and that really needs some tooling to help any hackers that show up process the giant bug list we have.
Thankfully there is a python3 command line tool for interacting with bugzilla,
called pybugz
. bugz
allows you to search through, up date and modify
bugs without having to use a web browser. Getting bugz
going was not very
intuitive and it took me a bit of faffing.
bugz
ships with a configuration for connecting to the FreeBSD bugzilla you
use it by selecting it as a connection
. The supported connections are dumped
out if you try and do an operation with the -d 3
debug flag. This flag is
really helpful for figuring out how to use bugz
because while it documents
itself, it holds on to the documentation like a powerful secret.
bugz
really wants you to authenticate before you do anything, it won't show
you help for commands without auth. There is however a --skip-auth
flag. With
this you can search for bugs, lets look for ipv6 issues with a patch in the
base system:
$ bugz --connection FreeBSD --skip-auth search --product "Base System" "patch ipv6" * Info: Using [FreeBSD] (https://bugs.freebsd.org/bugzilla/xmlrpc.cgi) * Info: Searching for bugs meeting the following criteria: * Info: product = ['Base System'] * Info: status = ['New', 'Open', 'In Progress', 'UNCONFIRMED'] * Info: summary = ['patch ipv6'] 88821 bugs [patch] IPv6 support for ggated(8) 186133 bugs [patch] tcpdump(1): zero checksums are invalid for UDP over IPv6 174225 bugs [network.subr] [patch] add support for ipv6_addrs_IF style aliases to rc.conf(5) 178881 bdrewery [patch] getifaddrs(3) does not report IPv6 addresses properly in 32-bit compatibility mode 180572 rc [network.subr] [patch] SLAAC is enabled for ipv6_cpe_wanif 133227 bugs [patch] whois(1): add support for SLD whois server lookups and IPv6 address lookups 104851 bugs [inet6] [patch] On link routes not configured when using both IPv6 autoconfiguration and manual configuration 147681 bugs [network.subr][patch] Add inet6 keyword if it wasn't specified in ifconfig_IF_ipv6 130657 bugs [ip6] [patch] ipv6 class option 165190 bugs [ipfw] [lo] [patch] loopback interface is not marking ipv6 packets 245103 bz [patch] [ipv6] IPv6: update v6 temporary address lifetime according to rfc4941bis * Info: 11 bug(s) found.
We can also filter our search by component:
$ bugz --connection FreeBSD --skip-auth search --product "Base System" --component bhyve
bugz
supports modifying and updating bugz from the command line, this is the
main focus of the README on github
. To authenticate bugz
takes a
username and password on the command line, I am not suggesting you fill your
history with your bugzilla password, I did something like:
$ bugz --connection FreeBSD -u [email protected] --password `pass show FreeBSD/bugz | head -n 1` search udp
There is a -k
flag that takes a key file, but I didn't want to dig into the
source of bugz
to figure out what this actually is.
Our bug squash is probably going to focus on clearing bugs with patches and the
readme has a workflow for finding bugs and grabbing any diffs. More tools can
and should be written around bugz
this is just a start. Just playing with
this I have spotted bugs than can easily be closed from the tracker.
Finally, you are going to need the help while using bugz
, it took me longer
than I liked to figure out that each sub command documents its own help and
they all take the -h
after the command. You need auth (or to skip auth)
before you can use this flag.
$ bugz --connection FreeBSD --skip-auth search -h
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK