>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