Re: 2.0.33 oops, non-fatal, comments anyone? [EIP traced]

Andrea Arcangeli (arcangeli@mbox.queen.it)
Thu, 26 Mar 1998 00:19:10 +0100 (CET)


On Wed, 25 Mar 1998, Chris Evans wrote:

>Mar 25 02:56:55 ferret kernel: EIP: 0010:[schedule+384/652]

The Oops is in goodness() (linux/kernel/sched.c) in the underlined line:

static inline int goodness(struct task_struct * p, struct task_struct *
prev, int this_cpu)
{
int weight;

#ifdef __SMP__
/* We are not permitted to run a task someone else is running */
if (p->processor != NO_PROC_ID)
return -1000;
#ifdef PAST_2_0
/* This process is locked to a processor group */
if (p->processor_mask && !(p->processor_mask & (1<<this_cpu))
return -1000;
#endif
#endif

/*
* Realtime process, select the first one on the
* runqueue (taking priorities within processes
* into account).
*/
if (p->policy != SCHED_OTHER)
^^^^^^^^^^^^^^^^^^^^^^^^
return 1000 + p->rt_priority;

The p->policy doesn' t exists (the p pointer is corrupted). It shouldn' t
be NULL since the Oops say "general protection: 0000" and not NULL pointer
derefence of something similar... Am I right here?

The interesting thing is that in patch-2.0.30 happen this:

- if (p->counter > current->counter + 3)
+ if (p->policy != SCHED_OTHER || p->counter > current->counter + 3)

2.0.29 should 100% Oops too ;-).........

>Mar 25 02:56:56 ferret kernel: Call Trace: [do_select+133/484]
>[do_select+397/484] [sys_select+387/596] [udp_rcv+956/976]
>[ip_rcv+1091/1396] [old_select+63/80] [system_call+85/124]

I will continue to trace the Oops tomorrow (or when I will have some
time.....).

Andrea[s] Arcangeli

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu