lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20071201212054.2377c8be@poseidon.drzeus.cx>
Date:	Sat, 1 Dec 2007 21:20:54 +0100
From:	Pierre Ossman <drzeus-list@...eus.cx>
To:	Pierre Ossman <drzeus-list@...eus.cx>
Cc:	LKML <linux-kernel@...r.kernel.org>, jakub@...hat.com,
	Thomas Gleixner <tglx@...utronix.de>
Subject: Re: Fedora's latest gcc produces unbootable kernels

On Sat, 1 Dec 2007 18:47:52 +0100
Pierre Ossman <drzeus-list@...eus.cx> wrote:

> On Sat, 1 Dec 2007 15:42:23 +0100
> Pierre Ossman <drzeus-list@...eus.cx> wrote:
> 
> > The latest GCC in Fedora rawhide contains some serious bug (or provokes a latent one in the kernel) that makes every kernel built unbootable. It just locks up halfway through the init. Kernels that previously worked fine all now experience the same symptom. Even RH's own kernels exhibit this. The kernel built Nov 24th works, Nov 26th doesn't. gcc was updated 26th, 14 hours earlier.
> > 
> 
> Digging a bit further, it is indeed the high-res stuff (the first missing message) that hangs. If I hard code the kernel to just be non-high-res capable, it boots, but time keeping is horribly broken.
> 
> Anyway, hopefully this means I'll soon have the object file that gets miscompiled. Jakub also pointed me to an older gcc RPM so that I can produce an object file with that as well and see what differs.
> 

I've now pinpointed where it hangs. And it doesn't hang in fact. It gets stuck in an infinite loop in tick_setup_sched_timer():

	for (;;) {
		hrtimer_forward(&ts->sched_timer, now, tick_period);
		hrtimer_start(&ts->sched_timer, ts->sched_timer.expires,
			      HRTIMER_MODE_ABS);
		/* Check, if the timer was already in the past */
		if (hrtimer_active(&ts->sched_timer))
			break;
		now = ktime_get();
	}

I've added Thomas as cc as this is his domain, so perhaps he has some idea what the compiler does wrong here. I've also included the two object files (one good, one bad). HEAD is v2.6.24-rc3.

Rgds
-- 
     -- Pierre Ossman

  Linux kernel, MMC maintainer        http://www.kernel.org
  PulseAudio, core developer          http://pulseaudio.org
  rdesktop, core developer          http://www.rdesktop.org

Download attachment "tick-sched.bad" of type "application/octet-stream" (64104 bytes)

Download attachment "tick-sched.good" of type "application/octet-stream" (64116 bytes)

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ