Skip to contentSkip to conversation

kernel git bisect question

DISCUSSION Mark Hounschell 3 participants 9 messages Mar 10, 2011 – Mar 11, 2011

lore
Share & tools
lore
#0 lore raw

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

Thanks
Mark

#1 lore raw
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

You can count on the build system to take care.
It is very rare that the build system does not handle this.

Lately we fixed a bug where we did not properly handled when a file was renamed from *.S to *.c. But you will most likely not hit this.

Sam

#2 lore raw
Quoted 4 lines · Sam Ravnborg
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

Quoted 9 lines

You can count on the build system to take care.
It is very rare that the build system does not handle this.

Lately we fixed a bug where we did not properly handled when a file was renamed from *.S to *.c. But you will most likely not hit this.

Sam
.

Thanks

Mark

#3 lore raw
In reply to Mark Hounschell
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

I don't usually do a make clean. Although my ktest.pl (see tools/testing/ktest) does do a make mrproper between builds (unless you specify not to).

There are some cases in the kernel that can cause bugs if you do not do a make clean, so if your bisect hits one of those rare cases, you may introduce a bug in the build. But that is extremely rare. Like I said, when I use to do manual git bisects, I never did a make clean. But now that I do automate bisects, and do not need to babysit the box, I let ktest do those cleans.

-- Steve

#4 lore raw
Quoted 4 lines · Steven Rostedt
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

I'm trying to bisect between 2.6.35 and 2.6.36. What have I done wrong? Here is exactly what I've done. Why after my second "git bisect bad" do I get a Makefile for 2.6.35-rc1 and then after the fourth I get a Makefile for 2.6.34??

harley:/usr/src # git clone git://git.kernel.org/pub/scm/linux/kernel/git/hpa/linux-2.6-allstable.git
Initialized empty Git repository in /usr/src/linux-2.6-allstable/.git/
remote: Counting objects: 1971777, done.
remote: Compressing objects: 100% (332768/332768), done.
remote: Total 1971777 (delta 1640306), reused 1952128 (delta 1621734)
Receiving objects: 100% (1971777/1971777), 402.59 MiB | 2.15 MiB/s, done.
Resolving deltas: 100% (1640306/1640306), done.

harley:/usr/src # cd linux-2.6-allstable
harley:/usr/src/linux-2.6-allstable # git bisect start
harley:/usr/src/linux-2.6-allstable # git bisect bad v2.6.36
harley:/usr/src/linux-2.6-allstable # git bisect good v2.6.35
Bisecting: 5103 revisions left to test after this (roughly 12 steps)
[78417334b5cb6e1f915b8fdcc4fce3f1a1b4420c] Merge branch 'bkl/core' of git://git.kernel.org/pub/scm/linux/kernel/git/frederic/random-tracing

harley:/usr/src/linux-2.6-allstable # git bisect bad
Bisecting: 2414 revisions left to test after this (roughly 11 steps) [6ba74014c1ab0e37af7de6f64b4eccbbae3cb9e7] Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6

harley:/usr/src/linux-2.6-allstable # git bisect bad (Why did this one give me a 2.6.35-rc1 Makefile)
Bisecting: 1366 revisions left to test after this (roughly 10 steps) [b7753c8cd51dce67a0b152efb456a21ff1cc241b] cfg80211: fix dev <-> wiphy typo

harley:/usr/src/linux-2.6-allstable # git bisect bad (Still a 2.6.35-rc1 Makefile)
Bisecting: 643 revisions left to test after this (roughly 9 steps) [ef2519b1dd3994074e3e438d67f2d91d07c3a5a8] netxen: fail when try to setup unsupported features

harley:/usr/src/linux-2.6-allstable # git bisect bad (Still a 2.6.35-rc1 Makefile)
Bisecting: 319 revisions left to test after this (roughly 8 steps)
[14599f1e341ee219abdd15f4eee5872d6f2d29f1] Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6

harley:/usr/src/linux-2.6-allstable # git bisect bad (Why did this one give me a 2.6.34 Makefile)
Bisecting: 161 revisions left to test after this (roughly 7 steps) [86cc652dfe57f365533cf2e64e08ff37a510d42e] iwlwifi: remove debug frame dumping

Thanks again
Mark

#5 lore raw
Quoted 10 lines · Mark Hounschell
Quoted 4 lines · Steven Rostedt
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

I'm trying to bisect between 2.6.35 and 2.6.36. What have I done wrong? Here is exactly what I've done. Why after my second "git bisect bad" do I get a Makefile for 2.6.35-rc1 and then after the fourth I get a Makefile for 2.6.34??

The development is not linear.
So you see a commit developed on top of 2.6.34 that was included in 2.6.35. This is normal.

Sam

#6 lore raw
Quoted 7 lines · Sam Ravnborg
Quoted 6 lines · Mark Hounschell
Quoted 4 lines · Steven Rostedt
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

Quoted 9 lines
Quoted 4 lines

I'm trying to bisect between 2.6.35 and 2.6.36. What have I done wrong? Here is exactly what I've done. Why after my second "git bisect bad" do I get a Makefile for 2.6.35-rc1 and then after the fourth I get a Makefile for 2.6.34??

The development is not linear.
So you see a commit developed on top of 2.6.34 that was included in 2.6.35. This is normal.

OK, thanks again. I'll continue on with the process then.

Mark

#7 lore raw
In reply to Sam Ravnborg
Quoted 7 lines · Sam Ravnborg
Quoted 6 lines · Mark Hounschell
Quoted 4 lines · Steven Rostedt
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

Quoted 8 lines
Quoted 4 lines

I'm trying to bisect between 2.6.35 and 2.6.36. What have I done wrong? Here is exactly what I've done. Why after my second "git bisect bad" do I get a Makefile for 2.6.35-rc1 and then after the fourth I get a Makefile for 2.6.34??

The development is not linear.
So you see a commit developed on top of 2.6.34 that was included in 2.6.35. This is normal.

Right.

Mark, don't be embarrassed, this is a common question for those that start using git bisect. Because of the way git merges branches, you may end up in an old version of a kernel, while looking between two newer versions.

    v2.6.36
        |
        +
        |\
        | \
v2.6.35 +  \
        |   +---- developers branch
        |  /
        | /
        |/
        +--- v 2.6.34
        |

If a developer branched off of 2.6.34 and then his work got merged after v2.6.35, your bisect may easily go into that developers branch between 2.6.35 and 2.6.36, where you will suddenly see 2.6.34 appear and disappear within bisect iterations. IOW, don't trust what you see in the Makefile ;)

Understand?

-- Steve

#8 lore raw
Quoted 39 lines · Steven Rostedt
Quoted 7 lines · Sam Ravnborg
Quoted 6 lines · Mark Hounschell
Quoted 4 lines · Steven Rostedt
Quoted 2 lines · Mark Hounschell

Between git bisect [good | bad ]s should I always "make clean" or can I count on the build system to take care of everything properly?

Quoted 8 lines
Quoted 4 lines

I'm trying to bisect between 2.6.35 and 2.6.36. What have I done wrong? Here is exactly what I've done. Why after my second "git bisect bad" do I get a Makefile for 2.6.35-rc1 and then after the fourth I get a Makefile for 2.6.34??

The development is not linear.
So you see a commit developed on top of 2.6.34 that was included in 2.6.35. This is normal.

Right.

Mark, don't be embarrassed, this is a common question for those that start using git bisect. Because of the way git merges branches, you may end up in an old version of a kernel, while looking between two newer versions.

    v2.6.36
        |
        +
        |\
        | \
v2.6.35 +  \
        |   +---- developers branch
        |  /
        | /
        |/
        +--- v 2.6.34
        |
Quoted 8 lines

If a developer branched off of 2.6.34 and then his work got merged after v2.6.35, your bisect may easily go into that developers branch between 2.6.35 and 2.6.36, where you will suddenly see 2.6.34 appear and disappear within bisect iterations. IOW, don't trust what you see in the Makefile ;)

Understand?

Understood. I was starting to think it was me. Thanks.

Mark