On Tue, Oct 24, 2000 at 07:51:42AM +0200, Houten K.H.C. van (Karel) wrote:
> Aside from this I stil get 'bug in get_wchan' messages, but everything
> seems to run fine. I hope to test my current kernels on a 5000/150 and
> a 3100.
Try this untested fix for get_wchan. The values in the ps axl column should
now be numbers that make sense as addresses. Unless the `n' option is
also used ps will try to translate the address back into a symbol. Cite
from ps(1):
[...]
To produce the WCHAN field, ps needs to read the Sys
tem.map file created when the kernel is compiled. The
search path is:
$PS_SYSTEM_MAP
/boot/System.map-`uname -r`
/boot/System.map
/lib/modules/`uname -r`/System.map
/usr/src/linux/System.map
/System.map
[...]
If that's working as planned please send me the WCHAN of any stuck process.
I need to know where they're stuck.
Ralf
--- arch/mips/kernel/process.c 2000/10/05 01:18:43 1.21
+++ arch/mips/kernel/process.c 2000/10/24 14:54:29
@@ -203,18 +203,9 @@
return 0;
pc = thread_saved_pc(&p->thread);
- if (pc == (unsigned long) interruptible_sleep_on
- || pc == (unsigned long) sleep_on) {
- schedule_frame = ((unsigned long *)p->thread.reg30)[9];
- return ((unsigned long *)schedule_frame)[15];
- }
- if (pc == (unsigned long) interruptible_sleep_on_timeout
- || pc == (unsigned long) sleep_on_timeout) {
- schedule_frame = ((unsigned long *)p->thread.reg30)[9];
- return ((unsigned long *)schedule_frame)[16];
- }
if (pc >= first_sched && pc < last_sched) {
- printk(KERN_DEBUG "Bug in %s\n", __FUNCTION__);
+ schedule_frame = ((unsigned long *)p->thread.reg30)[9];
+ return ((unsigned long *)schedule_frame)[11];
}
return pc;
|