Re: 2.6 unwind problem in kernel/sched.c

From: David Mosberger <davidm_at_napali.hpl.hp.com>
Date: 2004-03-11 19:14:51
>>>>> On Tue, 09 Mar 2004 11:50:56 +1100, Keith Owens <kaos@sgi.com> said:

  Keith> 2.6.4-rc2, gcc 3.2.3, binutils 2.14.90.0.4.  kernel/sched.c
  Keith> does schedule() -> context_switch() -> switch_to() followed
  Keith> by finish_task_switch().  finish_task_switch() calls
  Keith> finish_arch_switch() which enables interrupts.  If there is
  Keith> an interrupt pending, that interrupt runs at schedule+0x1090
  Keith> (ssm).

  Keith> At this point we are running on the new stack but cr_iip
  Keith> points into schedule() so the unwinder uses schedule's unwind
  Keith> data (b0, ar.pfs in r60, r61).  r60 and r61 are loaded from
  Keith> bsp on the new stack, they are completely wrong and the
  Keith> unwind is useless.

I must be missing something. After switch_to() you're fully switched
to the new task so I don't see why an interrupt during
finish_arch_switch() would mess up the backtrace.  Since CR.IIP points
to schedule() and since the interrupt handler will return to that
instruction after its done, the state at that instruction better be
valid.

	--david
-
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Received on Thu Mar 11 03:15:06 2004

This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:24 EST