Crashes with sched-bind

Paul Williams pwillia at
Wed Nov 19 11:03:27 PST 2003

I'm trying to use the sched_bind function in the ULE scheduler. It works
fine when binding the thread to the processor that it is currently on, but
always crashes when sending it to a different processor.
Here is info from a representative crash (thread is on cpu1, sending it to
cpu0).  I'm grabbing sched_lock (mtx_lock_spin(&sched_lock)), calling
sched_bind from the thread I want to bind, and giving it a CPU number from
0-3 (quad CPU system). I'm running 5-Current from 14 Nov 03.
Any other info necessary or useful to figure out what is going on?
Thank you, 
Kernel trap 12 with interrupts disabled
Fatal trap 12: page fault while in kernel mode
Cupid = 1; apic id = 01
Fault virtual address = 0x4
Fault code = supervisor write, page not present
Instruction pointer = 0x8:0xc0515590
Stack pointer = 0x10:0xebe2bc10
Frame pointer = 0x10:0xebe2bc1c
Code segment = base 0x0, limit 0xfffff, type 0x1b
                        = DPL 0, pres 1, def32 1, gran 1
processor eflags = resume, IOPL = 0
current process = 576 (call)
kernel: type 12 trap, code = 0
stopped at runq_add+0x40: orl %eax,0(%edi,%esi,4)
db> trace
runq_add(0,c64afea0,c06bf9ef,3a2,c06eeea0) at runq_add+0x40
sched_switch(c67e8640,9,c06bedf2,1ce,aa426f45) at sched_switch+0x132
mi_switch(c64afea0,0,c06bf9ef,5d9,ebe2bce0) at mi_switch+0x238
sched_bind(c67e8640,0,c6a6674a,39,ebe2bd40) at sched_bind+0x98
process_bind(c67e8640,ebe2bd10,c06d5f72,3ee,0) at process_bind+0xae
syscall(2f,2f,2f,bfbfed48.bfbfed50) at syscall+0x2c0
Xint0x80_syscall() at Xint0x80_syscall+0x1d
--- syscall(210, FreeBSD ELF32, hello). Eip=0x28097d6d, esp = 0xbfbecd0, ebp
= 0xbfbfed20 ---

More information about the freebsd-smp mailing list