Skip to contentSkip to conversation

printks in the scheduler freeze during scripts

DISCUSSION anton wilson 3 participants 3 messages Jun 27, 2002 – Jun 28, 2002

lore
Share & tools
lore
#0 lore raw

I'm running linux 2.4.17 and Redhat 7.2 with the preemptive and low latency patches, and whenever I stick printks in the scheduler(void) my system freezes somewhere after it tries to load the system font. Where it stops seems to be random. I can only run under single user mode without my system freezing. Does anyone have any clues why? Or any better ways to go about tracking the scheduling of processes in the scheduler?

Anton

Signature · 3 lines
Camotion
Software Development
678-471-0895
#1 lore raw
Quoted 8 lines · anton wilson

I'm running linux 2.4.17 and Redhat 7.2 with the preemptive and low latency patches, and whenever I stick printks in the scheduler(void) my system freezes somewhere after it tries to load the system font. Where it stops seems to be random. I can only run under single user mode without my system freezing. Does anyone have any clues why? Or any better ways to go about tracking the scheduling of processes in the scheduler?

printk() calls wake_up(), to give klogd a kick. So a printk from the scheduler tends to deadlock. Just delete the last two lines of kernel/printk.c:release_console_sem() and it should work OK.

#2 lore raw
In reply to anton wilson
Quoted 6 lines · anton wilson

I'm running linux 2.4.17 and Redhat 7.2 with the preemptive and low latency patches, and whenever I stick printks in the scheduler(void) my system freezes somewhere after it tries to load the system font. Where it stops seems to be random. I can only run under single user mode without my system freezing. Does anyone have any clues why? Or any better ways to go about tracking the scheduling of processes in the scheduler?

Something I have used in my testing:

Add, in the task structure:

task_t *sched_from;

In schedule, prior to context_switch:

next->sched_from = prior; /* at this point still == get_current ()*/

Somewhere else (so you don't inadvertantly side-effect to death schedule()):

Follow the back-link and printk whatever for the task that you are interested in, being careful not to reference task structures that no longer exist.

Mike

Quoted 3 lines

Anton