Language Selection

English French German Italian Portuguese Spanish

Kernel space: Bisection divides users and developers

Filed under
Linux

The last couple of years have seen a renewed push within the kernel community to avoid regressions. When a patch is found to have broken something that used to work, a fix must be merged or the offending patch will be removed from the kernel. It's a straightforward and logical idea, but there's one little problem: when a kernel series includes over 12,000 changesets (as 2.6.25 does), how does one find the patch which caused the problem? Sometimes it will be obvious, but, for other problems, there are literally thousands of patches which could be the source of the regression. Digging through all of those patches in search of a bug can be a needle-in-the-haystack sort of proposition.

One of the many nice tools offered by the git source code management system is called "bisect." The bisect feature helps the user perform a binary search through a range of patches until the one containing the bug is found. All that is needed is to specify the most recent kernel which is known to work (2.6.24, say), and the oldest kernel which is broken (2.6.25-rc9, perhaps), and the bisect feature will check out a version of the kernel at the midpoint between those two. Finding that midpoint is non-trivial, since, in git, the stream of patches is not a simple line. But that's the sort of task we keep computers around for. Once the midpoint kernel has been generated, the person chasing the bug can build and test it, then tell git whether it exhibits the bug or not. A kernel at the new midpoint will be produced, and the process continues. With bisect, the problematic patch can be found in a maximum of a dozen or so compile-boot-test cycles.

Bisect is not a perfect tool.




More in Tux Machines

NVIDIA Linux Performance-Per-Dollar: What The RX 480 Will Have To Compete Against

There's a lot of benchmarking going on this weekend at Phoronix in preparation for next week's Radeon RX 480 Linux review. Here are some fresh results on the NVIDIA side showing the current performance-per-dollar data for the NVIDIA Maxwell and Pascal graphics cards for seeing what the RX 480 "Polaris 10" card will be competing against under Linux. Read more

RaspAnd Project Brings Android 6.0 Marshmallow to Raspberry Pi 3, Now with GAAPS

Android-x86 and GNU/Linux developer Arne Exton has informed Softpedia today, June 25, 2016, about the immediate availability of a new build of his RaspAnd distribution for Raspberry Pi single-board computers. RaspAnd Build 160625 is the first to move the Android-x86-based distro to the latest Android 6.0.1 Marshmallow mobile operating system created by Google. And in the good tradition of the RaspAnd project, both Raspberry Pi 3 Model B and Raspberry Pi 2 Model B are supported. Read more

BSD Leftovers

  • FreeBSD 11.0 Alpha 5 Released, Schedule So Far Going On Track
    The fifth alpha release of the huge FreeBSD 11.0 operating system update is now available for testing. FreeBSD 11.0 is bringing updated KMS drivers, Linux binary compatibility layer improvements, UEFI improvements, Bhyve virtualization improvements, and a wide range of other enhancements outlined via the in-progress release notes.
  • DragonFly's HAMMER2 File-System Sees Some Improvements
    The HAMMER2 file-system is going on four years in development by the DragonFlyBSD crew, namely by its founder Matthew Dillon. It's still maturing and taking longer than anticipated, but this is yet another open-source file-system.

Debian GNU/Linux 9 "Stretch" to Ship with GCC 6 by Default, Binutils 2.27

Debian developer Matthias Klose has announced that the new GCC 6 compiler, which will be made the default GCC compiler for the upcoming Debian GNU/Linux 9 "Stretch" operating system, is now available in the Debian Testing repos. Debian users who are currently using Debian Testing can make GCC 6 the default compiler by installing the gcc/g++ packages from experimental. If installing it, they are also urged to help fix reported built failures in Debian Testing and Debian Unstable. Read more