[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [microblaze-uclinux] kernel BUG at sched.c:687!
On Thursday 20 April 2006 10:31, Brettschneider Falk wrote:
> Hi,
>
> Alejandro Lucero wrote:
> > I assumed you are using the entry.S without my patch reported
> > two days ago.
> > aren't you?
>
> I've tried JWs version of your patch but it doesn't help as a bugfix. My
> environment is one active user app with several threads (SCHED_RR), a high
> IRQ frequency (about 2 per millisecond), many thread switches, many
> locks/unlocks of semaphores and mutexes. From time to time one thread of
> that application calls pthread_cancel() to another thread.
> Often (about after 20 kill actions) this leads to either a Linux crash
> (with several versions of "kernel BUG at sched.c:***"), or just a total
> hang or an exit of the app with return code 5. (The statistical
> distribution is: displaying of scheduler bug = 0,01%, Linux hang = 60%,
> process exit = rest.) I haven't the problems if either the IRQ frequency is
> very low or no threads are cancelled(). That's why I asked you if you ever
> tried to kill threads in your application, this increases the chance of a
> Linux crash extremely here.
Perhaps you could do some tests to discard the kernel stack overflow. Try to
put this in your entry.S file but update the "current" pointer and make sure
you are not using memory 0x554, 0x558, 0xc64 and 0xc68 (surely LMB memory).
This code looks at the kernel stack size and if it is greter then 0x1d4c
(7500bytes) the system will execute an endless loop with interrupts disabled.
In 0xc64 is stored the maximum kernel stack size used.
Rembember to update current which is my kernel is in 0x0213472c address. Use
objdump -t image.elf | grep current
Try to put this in ENTRY(irq) just after swi r1, r0, ENTRY_SP and before
SAVE_STATE
swi r11, r0, 0x554
swi r12, r0, 0x558
lwi r11, r0, 0x0213472c;
addi r11, r11, 0x2000;
rsub r11, r1, r11;
lwi r12, r0, 0xc64;
swi r11, r0, 0xc68;
rsub r11, r11, r12;
bgei r11, 1f;
lwi r11, r0, 0xc68;
swi r11, r0, 0xc64;
1:
lwi r11, r0, 0x0213472c;
addi r11, r11, 0x2000;
rsub r11, r1, r11;
addi r12, r0, 0x1d4c;
rsub r11, r12, r11;
blei r11, 2f;
lwi r11, r0, 0;
mts rmsr, r11;
nop;
nop;
nop;
bri -8;
2:
lwi r11, r0, 0x554
lwi r12, r0, 0x558
> Cheers, F@lk
> ___________________________
> microblaze-uclinux mailing list
> microblaze-uclinux@xxxxxxxxxxxxxx
> Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
> Mailing List Archive :
> http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/
--
Alejandro Lucero
Technical Director
+34 665 68 71 68
Valencia (SPAIN)
www.os3sl.com
___________________________
microblaze-uclinux mailing list
microblaze-uclinux@xxxxxxxxxxxxxx
Project Home Page : http://www.itee.uq.edu.au/~jwilliams/mblaze-uclinux
Mailing List Archive : http://www.itee.uq.edu.au/~listarch/microblaze-uclinux/